当前位置: 首页> 最新文章列表> 如何通过 substr 函数解决 PHP 字符串过长问题?

如何通过 substr 函数解决 PHP 字符串过长问题?

gitbox 2025-10-01
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 这是前面与文章内容无关的 PHP 代码示例</span></span><span>
</span><span><span class="hljs-variable">$placeholder</span></span><span> = </span><span><span class="hljs-string">"这段代码与文章内容无关,仅作示例使用。"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$placeholder</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 文章正文:如何通过 substr 函数解决 PHP 字符串过长问题?
 * 
 * 在 PHP 开发中,经常会遇到字符串过长的情况,比如从数据库中获取文章内容、用户评论或其他文本数据时,
 * 直接输出可能会导致页面布局混乱或加载速度变慢。为了解决这个问题,可以使用 PHP 内置的 substr 函数对字符串进行截取。
 * 
 * 1. substr 函数基础用法
 * substr 函数的基本语法如下:
 * 
 * substr(string $string, int $start, ?int $length = null): string
 * 
 * - $string:需要处理的原始字符串。
 * - $start:开始截取的位置,0 表示从字符串开头开始。
 * - $length:可选参数,表示要截取的长度。如果不传递,则会截取到字符串末尾。
 * 
 * 示例:
 */</span>
</span><span><span class="hljs-variable">$original</span></span><span> = </span><span><span class="hljs-string">"PHP 是一种流行的服务器端脚本语言,非常适合开发网页和应用程序。"</span></span><span>;
</span><span><span class="hljs-variable">$shortened</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$original</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shortened</span></span><span> . </span><span><span class="hljs-string">"..."</span></span><span>; </span><span><span class="hljs-comment">// 输出: PHP 是一种流行的服务器端...</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 2. 处理多字节字符
 * 在处理中文、日文等多字节字符时,直接使用 substr 可能会出现乱码。
 * 解决方法是使用 mb_substr 函数:
 */</span>
</span><span><span class="hljs-variable">$original_cn</span></span><span> = </span><span><span class="hljs-string">"这是一个中文字符串示例,用来测试截取功能。"</span></span><span>;
</span><span><span class="hljs-variable">$shortened_cn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$original_cn</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-string">"UTF-8"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$shortened_cn</span></span><span> . </span><span><span class="hljs-string">"..."</span></span><span>; </span><span><span class="hljs-comment">// 输出: 这是一个中文字符串...</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 3. 动态截取并添加省略号
 * 可以根据需求动态判断字符串长度,超过一定长度时才截取并添加省略号:
 */</span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">truncateString</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$string</span></span></span><span>, </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_strlen</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">"UTF-8"</span></span><span>) &gt; </span><span><span class="hljs-variable">$length</span></span><span>) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$length</span></span><span>, </span><span><span class="hljs-string">"UTF-8"</span></span><span>) . </span><span><span class="hljs-string">"..."</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>;
    }
}

</span><span><span class="hljs-variable">$example_text</span></span><span> = </span><span><span class="hljs-string">"通过 substr 或 mb_substr 函数,我们可以有效控制页面显示的文本长度,从而改善用户体验。"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">truncateString</span></span><span>(</span><span><span class="hljs-variable">$example_text</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>); </span><span><span class="hljs-comment">// 输出: 通过 substr 或 mb_substr 函数...</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 总结:
 * 使用 substr 或 mb_substr 可以方便地控制 PHP 字符串的长度:
 * - 对于英文或单字节字符,substr 足够使用。
 * - 对于中文或多字节字符,推荐使用 mb_substr。
 * - 配合判断长度和省略号,可以让页面显示更加整洁友好。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 尾部无关代码示例</span></span><span>
</span><span><span class="hljs-variable">$footer_note</span></span><span> = </span><span><span class="hljs-string">"本文示例结束。"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$footer_note</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>