在PHP 中處理多字節字符串時,常常需要進行不區分大小寫的替換操作。 mb_eregi_replace是一個非常實用的函數,它可以用來實現不區分大小寫的正則表達式替換,特別適合中文等多字節字符的處理。本文將介紹如何結合mb_eregi_replace函數和HTML 的<mark>標籤,為文本中的關鍵詞添加高亮效果。
mb_eregi_replace是PHP 的多字節字符串函數之一,作用是進行不區分大小寫的正則替換。它的語法如下:
mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $option = null): string
$pattern :要匹配的正則表達式(不區分大小寫)
$replacement :替換的字符串
$string :被搜索的字符串
$option :可選參數,用於控制匹配行為
它支持多字節字符,適合中文、日文、韓文等語言的文本處理。
HTML5 的<mark>標籤專門用來標記需要高亮顯示的文本,瀏覽器默認用黃色背景來顯示標記內容,非常適合做關鍵詞高亮。
例如:
這是一個 <mark>高亮</mark> 的詞語。
在頁面中會顯示“高亮”二字帶有黃色背景。
下面是一個示例代碼,演示如何使用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>標籤包裹,從而實現高亮顯示。
mb_eregi_replace的匹配是不區分大小寫的,適合需要模糊匹配關鍵詞的場景。
正則表達式中的關鍵詞需要用管道符|分隔,表示“或”的關係。
如果關鍵詞中包含特殊字符,需要先進行轉義,以免影響正則匹配。
為確保多字節字符串處理正確,請確保PHP 環境開啟了mbstring 擴展。
假設你有以下示例網頁地址,需要替換其中某些關鍵詞:
<?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>標籤給文本中的關鍵詞加上高亮效果,提升內容的可讀性和用戶體驗。