Php:删除多个子标记(脚本)

Php:删除多个子标记(脚本),php,domdocument,Php,Domdocument,需要找到一个包含条件的条件。 下面的示例包含4个标记,我需要匹配包含条件的第二个标记并丢弃其他标记。以开头。在此之前,条件可以是空格或新行,而不是类似于if(window.location.href==bar){}的条件,然后可以是空格或新行,最后是 <script> <!-- discard ---> other stuff not to be found </script> <s

需要找到一个包含条件的
条件
。 下面的示例包含4个标记,我需要匹配包含条件的第二个标记并丢弃其他标记。以
开头。在此之前,条件可以是空格或新行,而不是类似于
if(window.location.href==bar){}
的条件,然后可以是空格或新行,最后是

<script>                  <!-- discard --->
other stuff
not to be found
</script>                 


<script>                  <!-- MATCH --->

if (window.location.href == bar) {         
do something                 
}

</script>                

<script>                 <!-- discard --->
other stuff
not to be found
</script>                

<script>                 <!-- discard --->
other stuff
not to be found
</script>

其他东西
找不到
如果(window.location.href==bar){
做点什么
}
其他东西
找不到
其他东西
找不到

提前感谢

这里您应该使用
DOMDocument
而不是
Regex
来匹配标记及其所需内容


这里您应该使用
DOMDocument
而不是
Regex
来匹配标记及其所需内容


我希望您期望得到这个结果。我希望您期望得到这个结果。实际上,我正在使用cURL获取html。@Avel您能分享完整的html吗?但我认为我上面的例子也适用于完整的HTML。事实上,我正在使用cURL来获取HTML。@Avel你能分享完整的HTML吗?但我认为我上面的例子也适用于完整的HTML
<?php
ini_set('display_errors', 1);
$object= new DOMDocument();
$object->loadHTML('<html><body><script>                  <!-- discard --->
other stuff
not to be found
</script>                 

<script>                  <!-- MATCH --->

if (window.location.href == bar) {         
do something                 
}

</script>                

<script>                 <!-- discard --->
other stuff
not to be found
</script>                

<script>                 <!-- discard --->
other stuff
not to be found
</script></body></html>');
$tagsToRemove=array();
foreach($object->getElementsByTagName("script") as $element)
{
    if($element instanceof  DOMElement)
    {
        if(!preg_match("/if\s*\(/i", $element->nodeValue))
        {
            $tagsToRemove[]=$element;
        }
    }
}
foreach($tagsToRemove as $element)
{
    $element->parentNode->removeChild($element);
}
echo $object->saveHTML();