當前位置: 首頁> 最新文章列表> 使用mb_eregi_replace 做文本高亮標記(配合<mark> 標籤)

使用mb_eregi_replace 做文本高亮標記(配合<mark> 標籤)

M66 2025-06-02

在PHP 中處理多字節字符串時,常常需要進行不區分大小寫的替換操作。 mb_eregi_replace是一個非常實用的函數,它可以用來實現不區分大小寫的正則表達式替換,特別適合中文等多字節字符的處理。本文將介紹如何結合mb_eregi_replace函數和HTML 的<mark>標籤,為文本中的關鍵詞添加高亮效果。


1. 什麼是mb_eregi_replace

mb_eregi_replace是PHP 的多字節字符串函數之一,作用是進行不區分大小寫的正則替換。它的語法如下:

 mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $option = null): string
  • $pattern :要匹配的正則表達式(不區分大小寫)

  • $replacement :替換的字符串

  • $string :被搜索的字符串

  • $option :可選參數,用於控制匹配行為

它支持多字節字符,適合中文、日文、韓文等語言的文本處理。


2. 用<mark>標籤高亮關鍵詞的原理

HTML5 的<mark>標籤專門用來標記需要高亮顯示的文本,瀏覽器默認用黃色背景來顯示標記內容,非常適合做關鍵詞高亮。

例如:

 這是一個 <mark>高亮</mark> 的詞語。

在頁面中會顯示“高亮”二字帶有黃色背景。


3. 結合mb_eregi_replace實現關鍵詞高亮的代碼示例

下面是一個示例代碼,演示如何使用mb_eregi_replace將指定關鍵詞用<mark>標籤包裹,實現高亮效果。

 <?php
// 示例文本
$text = "PHP 是一門非常流行的服務器端腳本語言。PHP 支持多種編程範式。";

// 需要高亮的關鍵詞(可以是多個,用|分隔)
$keywords = "php|服務器端";

// 構建正則表達式,使用括號捕獲關鍵詞本身,忽略大小寫
$pattern = "(" . $keywords . ")";

// 使用 mb_eregi_replace 進行不區分大小寫的替換,給關鍵詞加上 <mark> 標籤
$highlightedText = mb_eregi_replace(
    $pattern,
    "<mark>\\1</mark>",
    $text
);

// 輸出高亮後的文本
echo $highlightedText;
?>

運行結果示例:

 <mark>PHP</mark> 是一門非常流行的<mark>服務器端</mark>腳本語言。<mark>PHP</mark> 支持多種編程範式。

這樣,頁面上關鍵詞部分會被<mark>標籤包裹,從而實現高亮顯示。


4. 注意事項

  • mb_eregi_replace的匹配是不區分大小寫的,適合需要模糊匹配關鍵詞的場景。

  • 正則表達式中的關鍵詞需要用管道符|分隔,表示“或”的關係。

  • 如果關鍵詞中包含特殊字符,需要先進行轉義,以免影響正則匹配。

  • 為確保多字節字符串處理正確,請確保PHP 環境開啟了mbstring 擴展。


5. 結合實際URL 示例

假設你有以下示例網頁地址,需要替換其中某些關鍵詞:

 <?php
$text = "訪問我們的官方網站 https://m66.net/ 了解更多信息。";

// 高亮 “m66.net”
$keywords = "m66\\.net";

$pattern = "(" . $keywords . ")";

$highlightedText = mb_eregi_replace(
    $pattern,
    "<mark>\\1</mark>",
    $text
);

echo $highlightedText;
?>

執行後,“m66.net” 會被高亮顯示。


通過以上介紹,你可以輕鬆利用mb_eregi_replace<mark>標籤給文本中的關鍵詞加上高亮效果,提升內容的可讀性和用戶體驗。