过滤掉所有的iframe,但是除了src里面包含www.baidu.com的正则。
比如
$str = '<iframe src="http://www.baidu.com/adfadf/adfa" border="1"></iframe><iframe src="http://www.google.com" border="1"></iframe>';
$str = preg_replace('/正则/i', "", $str );
print $str;输出:<iframe src="http://www.baidu.com/adfadf/adfa" border="1"></iframe>

解决方案 »

  1.   

    用匹配不是更好。
    preg_match('/<iframe src="http:\/\/www.baidu.com.+<\/iframe>/isU',$str,$arr);
    echo $arr[0];
      

  2.   


    匹配只是得到了这些符合要求的iframe而已,没有达到我的目的啊,目的是去掉不合法的iframe。
      

  3.   

    $str = '<iframe src="http://www.baidu.com/adfadf/adfa" border="1"></iframe><iframe src="http://www.google.com" border="1"></iframe>';
    preg_match('/<iframe[^src]src="http:\/\/www\.baidu\.com[^"]*"[^\/]*\/iframe>/i', $str, $arr);
    echo $arr[0];
      

  4.   

    $str = '<iframe src="http://www.baidu.com/adfadf/adfa" border="1"></iframe><iframe src="http://www.google.com" border="1"></iframe>';
    $str = preg_replace('#<iframe.+www.baidu.com.+/iframe>#iU', "", $str );
    print $str;<iframe src="http://www.google.com" border="1"></iframe>
      

  5.   

    echo preg_replace('/.*(<iframe src="http:\/\/www.baidu.com.+<\/iframe>).+/is','$1',$str);
      

  6.   


    我不是要取到 www.baidu.com的iframe,我是想去掉其他的iframe。因为这个字符串里面可能还会有别的文字信息。比如
    $str = '测试文字测试文字<iframe src="http://www.baidu.com/adfadf/adfa" border="1">测试文字测试文字测试文字测试文字测试文字测试文字</iframe><iframe src="http://www.google.com" border="1"></iframe>';
      

  7.   

    $str = 'sadfsdfsd<iframe src="http://www.baidu.com/adfadf/adfa" border="1"></iframe><iframe src="http://www.google.com" border="1"></iframe>sdf';
    $str = preg_replace('#<iframe[^src]*src="(?!http://www.baidu.com)[^"]*"[^/]*/iframe>#i', '', $str);
    echo $str;
      

  8.   

    ls的应该行!,我也有个思路,替换掉所有的百度iframe 保存进变量中,用特殊字符串标识,备用然后替换掉所有iframe正则这楼有然后按原位置再替换回来,以前用过这种方法,压缩过html的,像js标签压缩方法不一样。