在 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 参数,以便精确截取所需的字符串内容。