當前位置: 首頁> 最新文章列表> 如何用mb_eregi_replace 函數來替換中文文本中的各種標點符號?

如何用mb_eregi_replace 函數來替換中文文本中的各種標點符號?

M66 2025-06-15

首先,了解一下mb_eregi_replace的基本語法:

 string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msri" ] )

這個函數的特點是對多字節字符串(比如UTF-8 編碼的中文)進行大小寫不敏感的正則匹配與替換。雖然該函數已被標記為廢棄,但在某些老版本或特定環境下仍被廣泛使用。

替換中文標點符號

我們常見的中文標點包括:

  • 全角逗號(,)

  • 全角句號(。)

  • 頓號(、)

  • 全角分號(;)

  • 全角問號(?)

  • 全角感嘆號(!)

  • 全角引號(“”『』)

這些標點符號在不同應用場景中可能需要被替換成英文標點或移除。例如,在搜索引擎預處理、內容去重或文本規範化過程中,統一標點非常有用。

示例代碼

假設我們要將一段中文文本中的所有中文標點符號替換為對應的英文標點。我們可以利用mb_eregi_replace配合多個替換步驟完成這一過程。

 <?php

mb_internal_encoding("UTF-8");

$text = "你好,世界!這是一個測試文本,包括各種中文標點:比如逗號、句號。還有“引號”、問號?等等。";

// 替換映射數組
$replacements = [
    ',' => ',',
    '。' => '.',
    '、' => ',',
    ';' => ';',
    ':' => ':',
    '?' => '?',
    '!' => '!',
    '“' => '"',
    '”' => '"',
    '‘' => "'",
    '’' => "'",
    '(' => '(',
    ')' => ')',
    '【' => '[',
    '】' => ']',
    '《' => '<',
    '》' => '>'
];

foreach ($replacements as $chinese => $english) {
    $pattern = preg_quote($chinese, '/');
    $text = mb_eregi_replace($pattern, $english, $text);
}

echo $text;

?>

輸出結果

你好,世界!這是一個測試文本,包括各種中文標點:比如逗號,句號.還有"引號",問號?等等.

這樣我們就成功地將一段中文文本中的中文標點符號替換為了英文標點,便於後續處理或顯示。

小貼士

  1. 儘管mb_eregi_replace能處理多字節字符,但因為它已被廢棄,建議使用mb_ereg_replacepreg_replace (配合/u修飾符)來代替。

  2. 若處理大量文本數據,使用strtr替代正則替換可能效率更高。

  3. 若有需求將標點移除而不是替換,只需將$english設置為空字符串即可。

在線測試建議

如果你希望在線調試該腳本,可以在如<code> https://www.m66.net/php-runner </code> 這樣的在線PHP 運行環境中進行測試,以便觀察實際效果。

通過合理使用mb_eregi_replace ,你可以輕鬆完成對中文文本中標點符號的規範化處理,為文本數據分析打下良好基礎。