2015-10-17 85 views
-3

我試圖用img標籤替換smileycodes。PHP替換笑臉由img標籤

我要取代這個:

:blush: 

由:

<img src='images/blush.png' /> 

「臉紅」 是variabele,所以它可以是任何的笑臉。

我必須替換冒號之間的所有內容。我不熟悉正則表達式。

你能幫我嗎?

回答

2

對於多個替換喲你可以使用str_replace與數組而不是字符串進行搜索,使用笑臉代碼的數組替換爲第二個數組的值。但是你需要配置數組中的所有值,它們是靜態的。

另一種解決方案是遍歷可能笑臉碼和每個的它做str_replace函數:

$possibleCodes = array('blush', 'smiley2', 'smiley3'); 
foreach($possibleCodes as $code) { 
    str_replace(':'.$code.':', "<img src='images/".$code.".png'", $yourString); 
} 

這需要具有圖像名稱相同笑臉代碼。

+0

謝謝!你的代碼作品! :) – Simon911

1

爲什麼使用正則表達式,如果你不熟悉它?沒有正則表達式,這非常簡單和容易。

str_replace(":blush:", "<img src='images/blush.png' />", $myString); 
+0

謝謝,但「臉紅」是一個變種。我不想爲每個笑臉都做這個。所以我想替換Collons之間的所有東西。 – Simon911

+1

@ Simon911使用switch語句確定它是什麼類型的表情符號,然後使用上面的代碼並將':blush:'更改爲任何情況。 – Script47

+0

你能舉個例子嗎? – Simon911

1

您可以使用preg_replace等作爲

preg_replace('~(:blush:)~','<img src="images/blush.png" />',$your_string); 

編輯

如果你有一個字符串數組來代替,那麼你可以簡單地使用str_replace等作爲

$find_array = array('blush', 'smiley2', 'smiley3'); 
$replace_array = ['<img src="images/blush.png" />','<img src="images/smiley2.png" />','<img src="images/smiley3.png" />'] 

str_replace($find_array,$replace_array,$your_string); 
+0

這將用圖像標記替換雙點內的所有值 - 即使它不是笑臉的有效代碼。此外,每個笑臉代碼都會被blush.png取代,這可能是錯誤的。 – ynnus

+0

查看我的更新回答@ynnus –