PHP - preg_replace更改表情符号图像的表情符号代码

时间:2016-02-21 09:50:50

标签: php

我想将我的字符串中的所有表情符号代码更改为表情符号图像。 这是我的代码和URL数组:

$smilies = array(
    array('http://page.com/facebook-smiley-face-for-comments.png', ':)'),
    array('http://page.com/big-smile-emoticon-for-facebook.png', ':D'),
    array('http://page.com/facebook-frown-emoticon.png', ':('),
    ...
);

这里是更改图像代码的脚本:

foreach($smilies as $emoticon)
{
    $quoted_emoticon = preg_quote($emoticon[1],"#");
    $match = '#(?!<\w)(' . $quoted_emoticon .')(?!\w)#';
    $message = preg_replace($match,'<img src="'.$emoticon[0].'">',$message);
}

但我有一个问题。我只想在表情符号代码有空格时更改图像代码 - 在表情符号代码之前和表情符号代码之后 - 例如:

  

这是带有表情符号的文字: - )

当emoticon位于字符串末尾时,我想更改图像代码。那么表情符号代码应该只添加空格之前代码:

  

这是带有表情符号的文字: - )

与字符串的begininnig相同的情况 - 表情符号代码应该只添加空格 代码之后:

  

: - )这里是带表情符号的文字。

任何人都可以帮我创建这些正则表达式吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

只有当某个表情符号代码前面或后面没有非空格字符时才更改正则表达式模式以允许匹配:

...
$match = '#(?<!\S)(' . $quoted_emoticon .')(?!\S)#iu';
...