$str = '<script src="../ui/js/test1.js" type="text/javascript"></script><script src="../ui/js/test2.js" type="text/javascript"></script><script type="text/javascript">alert("bb")</script><div id="web_name" class="haha">Hello World</div>';
该字符串中有三段script,
我想把
'<script src="../ui/js/test1.js" type="text/javascript"></script>'
'<script src="../ui/js/test2.js" type="text/javascript"></script>'
这两段去掉。请问高手,有木有正则可以直接匹配的啊。。前提是'<script type="text/javascript">alert("bb")</script>'这段不能去掉
或者能够匹配到"test1.js"和"test2.js"这两段也可以的。在线等,很急!谢谢

解决方案 »

  1.   

    echo preg_replace('/(<script\s*[^>]+><\/script>){2}(.+)/is','$2',$str);    //去掉test1.js和test2.js
      

  2.   


    <?php
    $str = '<script src="../ui/js/test1.js" type="text/javascript"></script><script src="../ui/js/test2.js" type="text/javascript"></script><script type="text/javascript">alert("bb")</script><div id="web_name" class="haha">Hello World</div>';
    $patt='/<script src="..\/ui\/js\/test1.js" type="text\/javascript">.*?<\/script><script src="..\/ui\/js\/test2.js" type="text\/javascript">.*?<\/script>/';
    echo htmlspecialchars($str).'<br /><hr />';
    $str=preg_replace($patt,'',$str);
    echo htmlspecialchars($str);
    ?>
      

  3.   


    谢谢!能取到test1.js和test2.js吗?
      

  4.   


    preg_match_all('/<script\s*[^>]+><\/script>/isU',$str,$arr);
    print_r($arr);Array
    (
        [0] => Array
            (
                [0] => <script src="../ui/js/test1.js" type="text/javascript"></script>
                [1] => <script src="../ui/js/test2.js" type="text/javascript"></script>
            ))
      

  5.   


    谢谢啊。我还有个问题啊。。
    就是我现在的html里用到了smarty,src里的值是这样的"../<{folder}>/test.js"
    用这个正则匹配的时候,只能匹配到<script src="../<{folder}>,怎么改进啊?
      

  6.   

    $str = '<script src="../ui/<{$js}>/test1.js" type="text/javascript"></script>';
    $str .= '<script src="../ui/<{$js}>/test2.js" type="text/javascript"></script>';
    $str .= '<script src="../ui/<{$js}>/test3.js" type="text/javascript"></script>';
    $str .= '<script type="text/javascript"></script>';
    $str .= '<div id="web_name" class="haha">Hello World<img src="tset.jpg"></div>';$pattern = '/<script[^>]+?src[^>]*?>\s*(?:<\/script>)?/i';
      

  7.   

    preg_match_all('/<script\s*(src="(.*)")?[^>]+><\/script>/isU',$str,$arr);
    print_r($arr[0]);