我有一个字符串:
$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);
但这个表达只取代了最后的笑容。我怎样才能改变所有照片的微笑?
答案 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);
每次替换发生时,您都返回整个原始字符串,因此每次返回原始字符串时都会恢复,减去最后一次更改。