首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP wordwrap() 函數格式化文本段落:固定寬度換行實作

     編輯:PHP 相關知識

PHP wordwrap() 函數格式化文本段落

`wordwrap()` 可將長字符串按指定寬度換行,支援自定義換行符、是否強制截斷單詞。常用於郵件內容格式化、報表輸出、終端顯示優化。

函數語法

string wordwrap (
    string $string,
    int $width = 75,
    string $break = "\n",
    bool $cut = false
)

參數說明

  • `$width`:每行最大字符數(預設 75)。
  • `$break`:換行字符串(預設 `\n`,HTML 可用 `
    `)。
  • `$cut`:`true` 強制在寬度處截斷單詞,`false` 保持單詞完整(可能超寬)。

基本範例

<?php
$text = "TRADING ON MARGIN POSES ADDITIONAL RISKS AND IS NOT SUITABLE FOR ALL INVESTORS. A COMPLETE LIST OF THE RISKS ASSOCIATED WITH MARGIN TRADING IS AVAILABLE IN THE MARGIN RISK DISCLOSURE DOCUMENT.";

// 移除原有換行
$text = str_replace(["\n", "\r"], ' ', $text);

echo wordwrap($text, 40, "
\n"); // 輸出每行不超過 40 字符,以
換行 ?>

切割模式差異示例

$str = "A_very_long_word_without_spaces";

echo wordwrap($str, 10, "\n", false);
// 輸出:
// A_very_long_word_without_spaces  (整行超過 10 但不切割)

echo wordwrap($str, 10, "\n", true);
// 輸出:
// A_very_long
// _word_witho
// ut_spaces   (強制每 10 字符切割)

實際應用場景

場景設定建議
純文本郵件width=72, break="\n", cut=false
HTML 網頁顯示width=80, break="
", cut=false
終端/命令列輸出width=80, break="\n", cut=true
固定寬度報表列width=列寬, break="\n", cut=true
短訊/推播內容預覽width=70, break="\n", cut=false

進階:中文文本換行處理

`wordwrap` 按**字節**計算寬度,**不支援多位元組字符**(中文佔 3 字節)。中文換行需自行實作:

function mb_wordwrap($str, $width = 75, $break = "\n", $cut = false, $encoding = 'UTF-8') {
    $len = mb_strlen($str, $encoding);
    if ($len <= $width) return $str;
    
    $result = '';
    $line = '';
    $words = preg_split('/(\s+)/u', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
    
    foreach ($words as $word) {
        $wlen = mb_strlen($word, $encoding);
        if (mb_strlen($line, $encoding) + $wlen > $width) {
            $result .= $line . $break;
            $line = $word;
        } else {
            $line .= $word;
        }
    }
    return $result . $line;
}

常見誤區

  1. 以為 `wordwrap` 能正確處理中文 → 按字節計算,會導致中文行寬不一致。
  2. 用於 HTML 輸出時未轉義實體 → 需先 `htmlspecialchars()` 再 `wordwrap()`。
  3. 郵件發送未遵循 RFC 5322 行長度限制(78 字符,含 CRLF)→ 設定 `width=76`。

善用 `wordwrap` 並針對多位元組字符自行擴展,能輕鬆實現各類文本排版需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved