我需要将图片标签替换为{微笑:微笑}
<?php
$pattern = '<img src="/img/smile/(.*?).gif">';
$replacement = '{smile:$1}';
$subject = '<div contenteditable="true" id="message_text">text<img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"><img src="/img/smile/smile3.gif"></div>';
echo preg_replace($pattern, $replacement, $subject, -1 );
?>我得到:
<div contenteditable="true" id="message_text">text<{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}><{smile:smile3}></div> <{smile:smile3}>但我需要
{smile:smile3}发布于 2013-08-21 13:45:23
您的<和>被视为分隔符,而不是表达式的一部分。使用:
$pattern = '#<img src="/img/smile/(.*?).gif">#';参见php.net regexp分隔符文档 (第三个代码示例和顶部用户注释)
发布于 2013-08-21 13:46:19
您需要在模式中使用分隔字符,并在内部转义此字符。
$pattern = '/<img src="\/img\/smile\/(.*?).gif">/';或
$pattern = '@<img src="/img/smile/(.*?).gif">@';https://stackoverflow.com/questions/18359107
复制相似问题