當前位置: 首頁> 最新文章列表> 如何通過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>