本帖最后由 woaipku 于 2014-09-25 09:19:26 编辑

解决方案 »

  1.   

    $ppp=preg_replace('/\s+onclick=".+"/U','',$str); 
    echo $ppp;
      

  2.   


    $str='<a onclick="beijing" style="width:200px"></a><a onclick="beijg" style="width:100px"></a>';
    $new=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
    echo $new;
    /*
    <a style="width:200px"></a><a style="width:100px"></a>
    */
      

  3.   

    $ppp=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str); 
      

  4.   

    怎么不行?$str = '<a onclick="beijing" style="width:200px"></a><a onclick="beijg" style="width:100px"></a>';
    echo preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);<a style="width:200px"></a><a style="width:100px"></a>$1、$2 是子模式的序号
    若写作 \\1、\\2 能理解吗?
      

  5.   

    $str='<a onclick="beijing" style="width:200px"></a><a onclick="shanghai" style="color:red"></a>';
    //下面是各种版本的答案,包括你们提出的在内,
    $ppp=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);
    $ppp=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);
    $ppp=preg_replace('/onclick=".*"/U','INFO',$str);
    $ppp=preg_replace('/\s+onclick=".+"/U','',$str); 
    $ppp=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
     echo $ppp;
      

  6.   


    学习了。
    刚才我又想起一个方法,是使用explode来讲代码字符串部分给拆分,然后每一部分再和onclick="***"去匹配,之后再将他们拼接起来,但是遇到一个问题,那就是html标签不能拆分的问题
    代码部分:
    // 能不能换种思路,将代码部分按照空格explode全部分开,之后每一个与onclick去正则匹配,匹配上的话就删掉,然后在将匹配之后的拼接起来。
    $arr=explode(" ",$str);
    echo "<pre>";
    print_r($arr);
    $len=count($arr);
    echo $len;结果部分:
    Array
    (
        [0] =>  onclick="beijing"
        [2] => style="width:200px"> onclick="shanghai"
        [4] => style="color:red">
    )
    5
      

  7.   

    $str='<a onclick="beijing" style="width:200px"></a><a onclick="shanghai" style="color:red"></a>';
    //下面是各种版本的答案,包括你们提出的在内,
    $ppp[]=preg_replace('/<a[^<]*onclick=".*"/U','<a[^<]INFO',$str);
    $ppp[]=preg_replace('/(<a[^<]*)onclick=".+"\s+/U','$1',$str);
    $ppp[]=preg_replace('/onclick=".*"/U','INFO',$str);
    $ppp[]=preg_replace('/\s+onclick=".+"/U','',$str); 
    $ppp[]=preg_replace('/(<a\s*)onclick=".+?"([^>]+?>)/i',"$1$2",$str);
    print_r($ppp);;Array
    (
        [0] => <a[^<]INFO style="width:200px"></a><a[^<]INFO style="color:red"></a>
        [1] => <a style="width:200px"></a><a style="color:red"></a>
        [2] => <a INFO style="width:200px"></a><a INFO style="color:red"></a>
        [3] => <a style="width:200px"></a><a style="color:red"></a>
        [4] => <a  style="width:200px"></a><a  style="color:red"></a>
    )
    没有看出什么不对
      

  8.   

    结果中只有键名为0,2,4的,其他的没有显示出来,
    并且最开始的<a,中间的></a><a部分也没有啊!!
      

  9.   

    为什么没有输出啊?屏幕一片空白,
    if ($ppp) {
        echo "A match was found.<hr>";
    } else {
        echo "A match was not found.<hr>";
    }
    echo $ppp;
    屏幕空白,没有输出。
    问题在哪?