微笑正则表达式(PHP)
我有一个字符串:微笑正则表达式(PHP),php,regex,preg-replace,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
$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);
$res=preg_replace('/(.+):([a-z]{1,10}):(.+)/i','$1$3',$str);
但这个表情只取代了最后的微笑。如何更改图片的所有微笑?仅更换预期零件:
$res = preg_replace('/:([a-z]{1,10}):/i', '<img src="/img/emoji/$1.png" >', $str);
$res=preg_replace('/:([a-z]{1,10}):/i',''$str);
将替换项更改为
$res = preg_replace('/:([a-z]{1,10}):/i', '<img src="/img/emoji/$2.png" >', $str);
$res=preg_replace('/:([a-z]{1,10}):/i',''$str);
每次替换发生时,您都返回整个原始字符串,因此每次它返回原始字符串时,都会还原,减去上次的更改。Remove
+
s:preg_replace('/:([a-z]{1,10}):/i','','$str)
为什么确定微笑只能包含1到10个符号?真的很抱歉-java混淆:)