在 PHP 中,截取字符串是一个常见的操作。以下是几种常用的字符串截取方法及其代码示例。
1. 使用 substr()
函数
substr()
函数用于从字符串中截取指定长度的子串。
语法
substr(string $string, int $start, ?int $length = null): string
$string
:原始字符串。$start
:起始位置(从 0 开始)。$length
:可选,截取的长度。如果未指定,则截取到字符串末尾。
示例代码
<?php$str = "Hello, World!";// 截取前 5 个字符$substring1 = substr($str, 0, 5);echo $substring1; // 输出: Hello// 从第 7 个字符开始截取$substring2 = substr($str, 7);echo $substring2; // 输出: World!// 从倒数第 6 个字符开始截取$substring3 = substr($str, -6);echo $substring3; // 输出: World!?>
2. 使用 mb_substr()
函数
mb_substr()
是 substr()
的多字节版本,适合处理包含中文等多字节字符的字符串。
语法
mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): string
$encoding
:可选,字符编码(如UTF-8
)。
示例代码
<?php$str = "你好,世界!";// 截取前 2 个字符$substring1 = mb_substr($str, 0, 2, 'UTF-8');echo $substring1; // 输出: 你好// 从第 3 个字符开始截取$substring2 = mb_substr($str, 3, null, 'UTF-8');echo $substring2; // 输出: 世界!?>
3. 使用 explode()
和 implode()
截取部分字符串
通过 explode()
将字符串拆分为数组,然后使用 implode()
重新组合。
示例代码
<?php$str = "apple,banana,orange";// 按逗号拆分字符串$parts = explode(',', $str);// 截取前两部分$substring = implode(',', array_slice($parts, 0, 2));echo $substring; // 输出: apple,banana?>
4. 使用正则表达式截取字符串
通过正则表达式匹配并截取字符串。
示例代码
<?php$str = "The price is $100.";// 截取价格部分preg_match('/\$\d+/', $str, $matches);echo $matches[0]; // 输出: $100?>
5. 截取字符串并添加省略号
在截取字符串后,添加省略号以表示截断。
示例代码
<?phpfunction truncateString($str, $length, $ellipsis = '...') { if (mb_strlen($str, 'UTF-8') > $length) { return mb_substr($str, 0, $length, 'UTF-8') . $ellipsis; } return $str;}$str = "这是一个很长的字符串。";echo truncateString($str, 6); // 输出: 这是一个很...?>
6. 综合示例:截取 HTML 内容并保留标签
在截取包含 HTML 标签的字符串时,需要确保标签的完整性。
示例代码
<?phpfunction truncateHtml($html, $length) { if (mb_strlen(strip_tags($html), 'UTF-8') <= $length) { return $html; } $truncated = ''; $count = 0; $tags = []; $tokens = preg_split('/(<[^>]+>)/', $html, -1, PREG_SPLIT_DELIM_CAPTURE); foreach ($tokens as $token) { if (preg_match('/^<[^>]+>$/', $token)) { $truncated .= $token; if (preg_match('/^<(\w+)[^>]*>$/i', $token, $matches)) { $tags[] = $matches[1]; } elseif (preg_match('/^<\/(\w+)[^>]*>$/i', $token, $matches)) { $tags = array_diff($tags, [$matches[1]]); } } else { $tokenLength = mb_strlen($token, 'UTF-8'); if ($count + $tokenLength > $length) { $truncated .= mb_substr($token, 0, $length - $count, 'UTF-8'); break; } else { $truncated .= $token; $count += $tokenLength; } } } while (!empty($tags)) { $truncated .= '</' . array_pop($tags) . '>'; } return $truncated;}$html = '<p>这是一个<strong>很长的</strong>字符串。</p>';echo truncateHtml($html, 10); // 输出: <p>这是一个<strong>很长的</strong>...</p>?>
7. 总结
在 PHP 中,常用的字符串截取方法包括:
substr()
:适合单字节字符。mb_substr()
:适合多字节字符(如中文)。explode()
和implode()
:适合按特定分隔符截取。正则表达式:适合复杂匹配场景。
截取 HTML 内容:需要确保标签完整性。
根据实际需求选择合适的方法,可以有效实现字符串截取功能。
本文关键词: php 简单 截取 字符串 代码 示例
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。