我运行一个有一些表情的论坛网站。代码为;)
。没什么奇怪的。要解析它,我使用命令
$text = str_ireplace(array(";)", ";-)", "^wink^"), "<img src='/images/emotes/wink.png' style='height: 30px;width:30px; vertical-align:text-top;'>", $text);
(对不起,如果我输错了。我现在无法复制粘贴)
一切都很好,但是当我尝试提供示例代码时:
function("mind");
我得到了这个回报:
功能(&#34;心&#34; 图像);
我在想,为什么会这样。我也在其他网页上看到过它(mrush.net)。只有在您输入")
但仅替换)
时才会发生这种情况。引号留下。
对此有任何解释吗?
答案 0 :(得分:4)
问题是您正在替换已使用htmlspecialchars
或类似内容转义的HTML字符串,该字符串会将引号转义为"
。所以顺序是:
")
")
;)
并输出"<img...>
"
并假设您的意思是"
,因此会显示引号和图片这很棘手,因为您无法在 HTML转义之前应用替换,因为您要为图像插入实际的HTML。
一种方法是使用明确的占位符,例如您的长格式^wink^
:
;)
的实例替换为^wink^
^wink^
替换为<img...>