;) 使用 ") 时显示的表情
;) emote showing when using ")
我 运行 一个有一些表情的论坛网站。一的代码是;)
。没有什么奇怪的。为了解析它,我使用命令
$text = str_ireplace(array(";)", ";-)", "^wink^"), "<img src='/images/emotes/wink.png' style='height: 30px;width:30px; vertical-align:text-top;'>", $text);
(抱歉,如果我打错了。我现在无法复制粘贴)
一切正常,但当我尝试给出示例代码时:
function("mind");
我在 return 中得到了这个:
function("mind"image);
我想知道为什么会这样。我也在其他网页上看到它(mrush.net)。只有当您键入 ")
时才会发生,但只会替换 )
。引号保留。
有什么解释吗?
问题是您在 HTML 字符串中替换,您已经用 htmlspecialchars
或类似的字符串进行了转义,将引号转义为 "
。所以顺序是:
- 用户类型
")
- escape 函数将其转义为
")
- 替换看到
;)
并输出 "<img...>
- 浏览器看到
"
并假定您的意思是 "
,因此显示引号和图像
这很棘手,因为您不能在 HTML-escaping 之前应用替换 ,因为您想为图像插入实际的 HTML。
一种方法是使用明确的占位符,例如您的 long-form ^wink^
:
- 将
;)
的实例替换为 ^wink^
- 转义HTML
- 用
<img...>
代替^wink^
我 运行 一个有一些表情的论坛网站。一的代码是;)
。没有什么奇怪的。为了解析它,我使用命令
$text = str_ireplace(array(";)", ";-)", "^wink^"), "<img src='/images/emotes/wink.png' style='height: 30px;width:30px; vertical-align:text-top;'>", $text);
(抱歉,如果我打错了。我现在无法复制粘贴)
一切正常,但当我尝试给出示例代码时:
function("mind");
我在 return 中得到了这个:
function("mind"image);
我想知道为什么会这样。我也在其他网页上看到它(mrush.net)。只有当您键入 ")
时才会发生,但只会替换 )
。引号保留。
有什么解释吗?
问题是您在 HTML 字符串中替换,您已经用 htmlspecialchars
或类似的字符串进行了转义,将引号转义为 "
。所以顺序是:
- 用户类型
")
- escape 函数将其转义为
")
- 替换看到
;)
并输出"<img...>
- 浏览器看到
"
并假定您的意思是"
,因此显示引号和图像
这很棘手,因为您不能在 HTML-escaping 之前应用替换 ,因为您想为图像插入实际的 HTML。
一种方法是使用明确的占位符,例如您的 long-form ^wink^
:
- 将
;)
的实例替换为^wink^
- 转义HTML
- 用
<img...>
代替
^wink^