从 HTML 标记中删除样式属性
我不太擅长正则表达式,但是对于PHP,我想从TinyMCE返回的字符串中的HTML标记中删除属性。style
所以改成香草。<p style="...">Text</p>
<p>Test</p>
我如何使用类似函数的东西来实现这一点?preg_replace()
我不太擅长正则表达式,但是对于PHP,我想从TinyMCE返回的字符串中的HTML标记中删除属性。style
所以改成香草。<p style="...">Text</p>
<p>Test</p>
我如何使用类似函数的东西来实现这一点?preg_replace()
实用正则表达式将在所有合理的情况下解决此问题。应删除不是第一个捕获组的匹配项部分,如下所示:(<[^>]+) style=".*?"
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
匹配一个后跟一个或多个“不”,直到我们来到和部分。使它甚至可以与 .将此匹配项替换为 ,即捕获的组。如果标记不包含 ,它将保持标记不变。<
>
space
style="..."
/i
STYLE="..."
$1
style="..."
像这样的东西应该有效(未经测试的代码警告):
<?php
$html = '<p style="asd">qwe</p><br /><p class="qwe">qweqweqwe</p>';
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML($html);
libxml_use_internal_errors(false);
$domx = new DOMXPath($domd);
$items = $domx->query("//p[@style]");
foreach($items as $item) {
$item->removeAttribute("style");
}
echo $domd->saveHTML();