php字符串替换,不考虑大小写或引号

php字符串替换,不考虑大小写或引号,php,Php,有没有一种方法可以编写字符串替换,而不是针对每种可能的情况编写数组 str_replace(array('type="text/css"','type=text/css','TYPE="TEXT/CSS"','TYPE=TEXT/CSS'),'',$string); 在这种情况下,您可以执行不区分大小写的常规表达式替换: 在这种情况下,您可以执行不区分大小写的常规表达式替换: 你可以用它来做这类事情:(感谢@AlexQuintero提供的一系列样式) saveHtml(),PHP\u EO

有没有一种方法可以编写字符串替换,而不是针对每种可能的情况编写数组

str_replace(array('type="text/css"','type=text/css','TYPE="TEXT/CSS"','TYPE=TEXT/CSS'),'',$string);

在这种情况下,您可以执行不区分大小写的常规表达式替换:


在这种情况下,您可以执行不区分大小写的常规表达式替换:

你可以用它来做这类事情:(感谢@AlexQuintero提供的一系列样式)

saveHtml(),PHP\u EOL;
}
函数removeAttr($tag、$attr、$doc){
$nodeList=$doc->getElementsByTagName($tag);
对于($nodeIdx=$nodeList->length;--$nodeIdx>=0;){
$node=$nodeList->item($nodeIdx);
$node->removeAttribute($attr);
}
}

你可以用它来做这类事情:(感谢@AlexQuintero提供的各种风格)

saveHtml(),PHP\u EOL;
}
函数removeAttr($tag、$attr、$doc){
$nodeList=$doc->getElementsByTagName($tag);
对于($nodeIdx=$nodeList->length;--$nodeIdx>=0;){
$node=$nodeList->item($nodeIdx);
$node->removeAttribute($attr);
}
}

正则表达式更适合于此正则表达式更适合于此我欣赏代码板示例。我正试着把我的头绕在这上面…我有另一个例子。if(strpos($html,)>0 | | strpos($html,)>0{$html=str_replace('',$html)}我如何在if语句中使用您的示例?编写一个正则表达式非常简单,在这种类型的替换中,在这里,使用它:)您可以用于
if
语句我从来不知道regexr存在。谢谢你的链接。我很欣赏代码板的例子。我正试着把我的头绕在这上面…我有另一个例子。if(strpos($html,)>0 | | strpos($html,)>0{$html=str_replace('',$html)}我如何在if语句中使用您的示例?编写一个正则表达式非常简单,在这种类型的替换中,在这里,使用它:)您可以用于
if
语句我从来不知道regexr存在。谢谢你的链接。他们说当你用正则表达式解决问题时,你有两个问题:D。我喜欢你的方法,冗长但有效。欢迎您使用array@1nflktd突出的例子。这回答了我的另一个问题。这是另一个基于你答案的问题。如果我有几个要删除removeAttr(“style”、“type”、“doc”);和removeAttr(“脚本”、“语言”、“文档”);multiple是否可以合并或最好有两个函数?@AlexQuintero yep,这就是为什么我不喜欢在html中使用它:)他们说,当你用正则表达式解决问题时,你会遇到两个问题:D.我喜欢你的方法,冗长但有效。欢迎您使用array@1nflktd突出的例子。这回答了我的另一个问题。这是另一个基于你答案的问题。如果我有几个要删除removeAttr(“style”、“type”、“doc”);和removeAttr(“脚本”、“语言”、“文档”);multiple可以合并还是最好有两个函数?@AlexQuintero yep,这就是为什么我不喜欢在html中使用它:)
preg_replace('/\s?type=["\']?text\/css["\']?/i', '', $string);
<?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);
    }
}