【发布时间】:2010-12-12 02:06:28
【问题描述】:
我想替换(所有出现的)HTML <font>-tag 在一个字符串中。
示例字符串:
Line1<div><font class="blablabla" color="#33FF33">Line2</font></div><div>Line3
或:
Line1<div><font color="#33FF33">Line2</font></div><div><font color="#FF3300">Li</font>ne3
字体(starttag)应该换成颜色,这样根据我们得到的两个例子:
Line1<div>33FF33Line2</font></div><div>Line3
Line1<div>33FF33Line2</font></div><div>FF3300Li</font>ne3
我尝试了以下方法(除其他外:P):
preg_replace('/<font.*color="#([0-9a-fA-F]){6}">/', '{1}', $string)
我认为我的方向是正确的,但我认为它更像是如此接近但又如此遥远:)
当我在其中只有 1 个字体标签的字符串上使用它时,它会删除字体标签(我一定是用替换 {1} 搞砸了一些东西)。 当我在其中包含多个字体标签的字符串上使用它时,它也是如此。但不仅要删除第一个字体标签,还要删除从第一个字体标签到下一个(或最后一个)字体标签的所有内容。
好的。
让我们暂时忘记 HTML 代码解析讨论。
如果我有以下文本怎么办:
This colorcode (#333333) is so cool
This colorcode (orange: #ff3300) is way cooler
我希望文本变成:
This colorcode 333333 is so cool
This colorcode ff3300 is way cooler
和我看到的一样,还是我现在无知?
【问题讨论】:
-
请不要尝试用正则表达式解析 HTML,否则小马来了...simplehtmldom.sourceforge.net
-
考虑 phpQuery 使用类似 jQuery 的 CSS 选择器和函数在 PHP 中解析和操作 HTML。
-
@Above:我真的需要使用 domdocument 解析字符串吗?其他?我需要替换的唯一两件事或两个具有可变颜色的示例字符串。
标签: php html regex preg-replace