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);
}
}