有没有办法在查找大写字母或引号时编写字符串替换,而不是为每种可能的情况编写数组?
str_replace(array('type="text/css"','type=text/css','TYPE="TEXT/CSS"','TYPE=TEXT/CSS'),'',$string);
答案 0 :(得分:4)
在这种情况下,您可以执行不区分大小写的正则表达式替换:
preg_replace('/\s?type=["\']?text\/css["\']?/i', '', $string);
答案 1 :(得分:2)
你可以使用DOMDocument来做这些事情:(感谢@AlexQuintero的样式数组)
<?php
$doc = new DOMDocument();
$str[] = '<style type="text/css"></style>';
$str[] = '<style type=text/css></style>';
$str[] = '<style TYPE="TEXT/CSS"></style>';
$str[] = '<style TYPE=TEXT/CSS></style>';
foreach ($str as $myHtml) {
echo "before ", $myHtml, PHP_EOL;
$doc->loadHTML($myHtml, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
removeAttr("style", "type", $doc);
echo "after: ", $doc->saveHtml(), PHP_EOL;
}
function removeAttr($tag, $attr, $doc) {
$nodeList = $doc->getElementsByTagName($tag);
for ($nodeIdx = $nodeList->length; --$nodeIdx >= 0; ) {
$node = $nodeList->item($nodeIdx);
$node->removeAttribute($attr);
}
}