在PHP 中, substr函數是一個非常常用的字符串處理函數,用來截取字符串的一部分。當我們需要從數組中的某個字符串元素提取指定部分時, substr就能派上用場。本文將通過一個示例來講解如何使用substr函數來截取數組中某個字符串元素的指定內容。
substr函數用於返回字符串的一部分。其基本語法如下:
<span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$string : 輸入的原始字符串。
$start : 截取開始的位置,可以是負數,表示從字符串末尾開始。
$length : 截取的長度(可選)。如果不指定,則截取到字符串的結尾。如果是負數,則從後往前計算。
假設我們有一個數組,數組中的每個元素都是一個字符串,我們想要從某個特定元素中截取一部分內容。我們可以通過以下步驟來實現這一操作。
假設我們有如下的數組,每個元素是一個包含日期時間的字符串,我們需要從每個元素中提取出日期部分。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 定義一個包含日期時間字符串的數組</span></span><span>
</span><span><span class="hljs-variable">$dateArray</span></span><span> = [
</span><span><span class="hljs-string">'2025-06-18 14:30:00'</span></span><span>,
</span><span><span class="hljs-string">'2023-09-12 09:45:00'</span></span><span>,
</span><span><span class="hljs-string">'2021-12-25 17:00:00'</span></span><span>
];
</span><span><span class="hljs-comment">// 遍歷數組,使用 substr 截取日期部分</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dateArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>) {
</span><span><span class="hljs-comment">// 截取前 10 個字符,即“YYYY-MM-DD”部分</span></span><span>
</span><span><span class="hljs-variable">$datePart</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"日期部分: <span class="hljs-subst">$datePart</span></span></span><span>\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-section">日期部分: 2025-06-18</span></span><span>
</span><span><span class="hljs-section">日期部分: 2023-09-12</span></span><span>
</span><span><span class="hljs-section">日期部分: 2021-12-25</span></span><span>
</span></span>
在這個示例中,我們通過substr($date, 0, 10)來從每個日期時間字符串中提取出前10 個字符(即“YYYY-MM-DD”格式的日期部分)。
如果我們只需要從字符串中的某個特定位置截取內容,可以使用substr來定位。例如,如果我們需要從日期時間字符串中截取時間部分(即“HH:MM:SS”),可以修改substr的參數如下:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dateArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>) {
</span><span><span class="hljs-comment">// 截取從第 11 個字符开始的后 8 個字符,即時間部分 "HH:MM:SS"</span></span><span>
</span><span><span class="hljs-variable">$timePart</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>, </span><span><span class="hljs-number">11</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"時間部分: <span class="hljs-subst">$timePart</span></span></span><span>\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-section">時間部分: 14:30:00</span></span><span>
</span><span><span class="hljs-section">時間部分: 09:45:00</span></span><span>
</span><span><span class="hljs-section">時間部分: 17:00:00</span></span><span>
</span></span>
substr函數支持負數作為$start參數,負數表示從字符串的末尾開始計算。例如, substr($string, -5)會返回字符串的最後5 個字符。
假設我們有一個包含URL 的數組,我們想要截取URL 的文件擴展名(比如.php , .html等),可以通過負數索引來實現:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$urls</span></span><span> = [
</span><span><span class="hljs-string">'https://example.com/index.php'</span></span><span>,
</span><span><span class="hljs-string">'https://example.com/about.html'</span></span><span>,
</span><span><span class="hljs-string">'https://example.com/contact.php'</span></span><span>
];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$urls</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$url</span></span><span>) {
</span><span><span class="hljs-comment">// 從字符串末尾截取 4 個字符,獲取文件擴展名</span></span><span>
</span><span><span class="hljs-variable">$extension</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>, -</span><span><span class="hljs-number">4</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件擴展名: <span class="hljs-subst">$extension</span></span></span><span>\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-section">文件擴展名: .php</span></span><span>
</span><span><span class="hljs-section">文件擴展名: .html</span></span><span>
</span><span><span class="hljs-section">文件擴展名: .php</span></span><span>
</span></span>
通過substr函數,PHP 提供了強大的字符串截取功能。無論是從數組中的字符串元素中提取特定部分,還是使用負數索引從字符串末尾截取內容, substr都能高效地完成任務。根據實際需求,我們可以靈活調整$start和$length參數,以便精確截取所需的字符串內容。