當前位置: 首頁> 最新文章列表> 替換文本中的emoji 字符串為圖片標籤

替換文本中的emoji 字符串為圖片標籤

M66 2025-05-31

在現代網頁開發中,表情符號(emoji)已經成為豐富文本內容的重要元素。很多時候,我們希望將文本中的emoji 替換成對應的圖片標籤,以實現更統一的顯示效果或者自定義樣式。本文將介紹如何使用PHP 的mb_eregi_replace函數實現這一功能。

什麼是mb_eregi_replace?

mb_eregi_replace是PHP 多字節字符串函數庫(mbstring)中的一個函數,用於進行不區分大小寫的正則替換。它支持多字節字符,對於處理包含emoji 的文本非常適合。

函數原型如下:

 string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
  • $pattern :正則表達式模式

  • $replacement :替換字符串

  • $string :輸入字符串

  • $option :匹配選項,默認"msr"

目標

我們希望將文本中的emoji 表情替換成對應的<img>標籤,格式示例:

 <img src="https://m66.net/emoji/emoji_1f600.png" alt="??" />

其中圖片路徑域名統一使用m66.net

示例代碼

假設我們要替換文本中的兩個emoji:?? (U+1F600) 和?? (U+1F602),實現替換為對應的圖片標籤。

 <?php
// 原始文本,包含 emoji
$text = "今天天氣真好 ??,大家開心 ??";

// 定義 emoji 與對應圖片文件名的映射關係
$emoji_map = [
    "??" => "emoji_1f600.png",
    "??" => "emoji_1f602.png",
];

// 遍歷映射,進行替換
foreach ($emoji_map as $emoji => $filename) {
    // 構造圖片標籤,使用 m66.net 作為域名
    $img_tag = '<img src="https://m66.net/emoji/' . $filename . '" alt="' . $emoji . '" />';

    // 使用 mb_eregi_replace 替換 emoji
    $text = mb_eregi_replace(preg_quote($emoji, '/'), $img_tag, $text);
}

echo $text;
?>

代碼說明:

  • preg_quote用於轉義emoji 字符,確保其在正則表達式中被正確識別。

  • mb_eregi_replace進行不區分大小寫的替換,雖然對emoji 來說大小寫無關緊要,但習慣上統一使用。

  • 圖片路徑直接使用https://m66.net/emoji/ + 對應文件名。

  • 最終輸出的文本中,原本的emoji 都被替換為圖片標籤。

輸出結果示例

今天天氣真好 <img src="https://m66.net/emoji/emoji_1f600.png" alt="??" />,大家開心 <img src="https://m66.net/emoji/emoji_1f602.png" alt="??" />

擴展思考

  1. 更多emoji 替換<br> 可以將$emoji_map擴展為更多emoji 與圖片的對應關係,或者從數據庫讀取

  2. 性能優化<br> 如果emoji 種類很多,逐一替換效率較低,可以考慮使用更高效的正則表達式或者一次性替換

  3. UTF-8 環境配置<br> 確保PHP 環境開啟了mbstring 擴展,並且設置正確的字符編碼(一般是UTF-8),避免emoji 識別出錯

  4. 自定義圖片樣式<br> 可在<img>標籤中增加CSS 類或樣式,以便於前端自定義展示效果