我正在尝试过滤HTML
文件以删除某些属性。具体来说,我想删除所有spans
设置颜色的除外。在设置颜色的跨度中,我将删除除 style='color...' 之外的所有属性。
即,如果我有:
<span lang=EN-US>This is a </span>
<span id="myspan" style='color:red;text-align:left;'>test</span>
<span lang=EN-US> to remove spans.</span>
我希望它是:
This is a
<span style='color:red'>test</span>
to remove spans.
为此,我正在使用preg_replace
. 我创建了这个regex
:
preg_replace(
'%(<span [^>]*color\:)([a-z]*)(;|\')([^>]*>)(.*)(<\/span>)%s',
"<qwerty style='color:$2'>$5</qwerty>",
$myText);
使用它后,我删除所有跨度,strip_tags
然后将所有跨度转换<qwerty>
为<span>
.
<span>
我的问题是和</span>
((.*)
在我的)之间的内容regex
正在获取所有文本,直到结束:
This is a
<span style='color:red'>test
to remove spans.</span>
我希望它获取所有文本,直到找到第一个 </span>
,但现在它获取所有文本,直到最后一个 </span>
。我怎样才能做到这一点?
谢谢!