2015-10-17 109 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 –