微笑的正则表达式(PHP)

时间:2016-09-06 08:32:25

标签: php regex preg-replace

我有一个字符串:

$str = "Hello:smile: How:flushed: Are you :neckbeard: ?";

我想收到这个字符串:

Hello<img src="/img/emoji/smile.png"> How<img src="/img/emoji/flushed.png"> Are you <img src="/img/emoji/neckbeard.png"> ?

我构造了正则表达式:

$res = preg_replace('/(.+):([a-z]{1,10}):(.+)/i', '$1<img src="/img/emoji/$2.png" >$3', $str);

但这个表达只取代了最后的笑容。我怎样才能改变所有照片的微笑?

2 个答案:

答案 0 :(得分:1)

仅替换预期的部分:

$res = preg_replace('/:([a-z]{1,10}):/i', '<img src="/img/emoji/$1.png" >', $str);

答案 1 :(得分:0)

将替换更改为

$res = preg_replace('/:([a-z]{1,10}):/i', '<img src="/img/emoji/$2.png" >', $str);

每次替换发生时,您都返回整个原始字符串,因此每次返回原始字符串时都会恢复,减去最后一次更改。