我正在为自己的 phpBB3 做一些事情,我正在尝试将这些微笑转换回原始的笑脸状态,例如
:) :( :O :P
由于笑脸的 HTML 包含以下内容:
/<img src=".*" alt="(.*)" title=".*">/gi
替换为:
$1
但是,当我有多个笑脸时,它只显示最后一个笑脸,例如如果是这样的话:
alt text http://uimgz.com/i/R2e3H8g5D8.png
它变成了这样:
:twisted:
这是右边最后一个笑脸,为什么它没有替换并返回所有应该返回的笑脸状态,如下所示:
:) :o :twisted:
正则表达式看起来不错,但我不知道问题是什么,所有正则表达式都使用 for()
循环进行替换循环,所以这不是问题。
多个笑脸 HTML:
<img src="./images/smilies/icon_e_smile.gif" alt=":)" title="Smile" /> <img src="./images/smilies/icon_e_surprised.gif" alt=":o" title="Surprised" /> <img src="./images/smilies/icon_twisted.gif" alt=":twisted:" title="Twisted Evil" />
最佳答案
将正则表达式更改为此并重试:
/<img src="[^"]*" alt="([^"]+)" title="[^"]*">/gi
正则表达式引擎通常是贪婪的。它将尝试匹配与某些内容相匹配的最长文本。在你的情况下,我将所有三个链接匹配为一个。我在这里所做的是将 src 属性内的内容限制为不包含 ",这样它就不会一直匹配到第三个 src。
它将其视为 src 属性 ./images/smilies/icon_e_smile.gif" alt=":)" title="Smile" /> <img src="./images/smilies/icon_e_surprised.gif" alt=":o" title="Surprised" /> <img src="./images/smilies/icon_twisted.gif
关于javascript - 将图像正则表达式转换为 BBCode 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641357/