當前位置: 首頁> 最新文章列表> 用explode() 和mb_eregi_replace 結合處理分段替換

用explode() 和mb_eregi_replace 結合處理分段替換

M66 2025-06-02

在PHP 中,字符串處理是常見的任務之一。尤其在處理包含多段內容的字符串時,如何有針對性地替換特定部分,往往需要結合多種函數來實現。本文將介紹如何結合explode()mb_eregi_replace()函數,實現對字符串的分段替換操作。


1. 函數簡介

  • explode($delimiter, $string)
    將字符串$string按照指定分隔符$delimiter拆分成數組。適合將文本按段落或某個標識拆分。

  • mb_eregi_replace($pattern, $replacement, $string)
    多字節安全的正則替換函數,支持不區分大小寫的匹配,常用於對UTF-8 或其他多字節編碼的文本進行正則替換。


2. 應用場景說明

假設我們有一段長文本,裡面含有多個段落,每個段落通過特定分隔符(比如換行符\n或自定義標記)分開。現在需要對其中某些段落執行敏感詞替換、格式調整等操作。


3. 代碼示例

<?php
// 示例文本,段落之間用換行符分隔
$text = "這是第一段內容。\n訪問網址:http://m66.net\n這是第三段內容,包含敏感詞:foo。";

// 1. 使用 explode 按換行符拆分段落
$paragraphs = explode("\n", $text);

// 2. 定義要替換的敏感詞及替換規則
$sensitiveWord = "foo";
$replacement = "***";

// 3. 對每個段落分別處理
foreach ($paragraphs as &$para) {
    // 用 mb_eregi_replace 進行不區分大小寫的替換
    $para = mb_eregi_replace($sensitiveWord, $replacement, $para);

    // 如果段落中包含 URL,且需要替換域名為 m66.net,可以用正則匹配 URL
    $para = mb_eregi_replace(
        // 簡單匹配 URL 的正則,匹配 http 或 https 開頭,後跟域名
        '(https?:\/\/)([a-z0-9\.\-]+)',
        '$1m66.net',
        $para
    );
}

// 4. 將處理後的段落合併回字符串
$result = implode("\n", $paragraphs);

// 輸出結果
echo "<pre>" . htmlspecialchars($result) . "</pre>";
?>

4. 運行結果分析

原文中的第三段敏感詞"foo" 被替換為"***",第二段中的URL http://m66.net保持不變(示例域名已經是m66.net ),若是其他域名也會被替換為m66.net

示例如果是http://example.com ,則會被替換成http://m66.net


5. 小結

通過先用explode()將字符串分段,再利用mb_eregi_replace()對每個段落進行正則替換,我們可以靈活地對文本的不同部分實施不同的處理策略,尤其適用於多段落文本的批量替換和處理。


參考鏈接