我有一个类似
的html字符串<p lang="es-CO" style="text-align: center;" align="LEFT">
<span style="font-family: 'comic sans ms', sans-serif;">
<img class="alignnone" src="url" width="525" height="360" />
</span>
</p>
我想删除所有关于所有标签减去img标签的attr,例如。我的意思是,我想选择哪个attr我想放弃。
我想要一个这样的结果:
<p>
<span>
<img src="url" width="525" height="360" />
</span>
</p>
我知道preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i", '<$1$2>', $html);
删除所有attr,但我不想删除宽度和高度,例如...
可以使用preg_replace
选择要保存或删除的attr或哪些标签?
答案 0 :(得分:3)
最好的方法是使用html解析器,但如果你的字符串就像你给出的一样简单,你可以这样做:
$str = '<p lang="es-CO" style="text-align: center;" align="LEFT">
<span style="font-family: \'comic sans ms\', sans-serif;">
<img class="alignnone" src="url" width="525" height="360" />
</span>
</p>';
$str = preg_replace('~<(?!\bimg\b)([a-z][a-z0-9]*)[^>]*(/?)>~is', '<$1$2>', $str);
echo $str,"\n";
<强>输出:强>
<p>
<span>
<img class="alignnone" src="url" width="525" height="360" />
</span>
</p>
(?!\bimg\b)
是negative look ahead,用于检查是否有img
个标记需要替换。