比如<任意个字符XXXX任意个字符>,判断是否存在XXXX字符串,如果是,则替换前后的尖括号,最后变成[任意个字符XXXX任意个字符]输出。

解决方案 »

  1.   

    最简单的
    if(strstr()) {
        str_replace
    }
      

  2.   

    问题是,如果还有<任意个字符ZZZZ任意个字符>,那不是也变成了[任意个字符ZZZZ任意个字符]
      

  3.   

    修正一下问题。如果有一个字符串
    $str="<任意个字符XXXX任意个字符><任意个字符ZZZZ任意个字符>"
    有什么办法可以修改成
    $str="[任意个字符XXXX任意个字符]<任意个字符ZZZZ任意个字符>"
    只修改符合XXXX条件的尖括号,不修改其他的。
      

  4.   

    echo preg_replace('/<(.+(?:XXXX).+?)>/s','[$1]',$str);
      

  5.   

    似乎这样也可以,对么?
    preg_replace('/<(.*XXXX.*)>/s','[$1]',$str);
      

  6.   

    preg_replace('/<(.*XXXX.*?)>/s','[$1]',$str);    //少了防止贪婪匹配
      

  7.   


    联系出现的时候,仅替换第一个和最后一个比如
    <任意个字符XXXX任意个字符><任意个字符XXXX任意个字符>,结果是
    [任意个字符XXXX任意个字符><任意个字符XXXX任意个字符]
      

  8.   

    $str = "<任意个字符XXXX任意个字符><任意个字符ZZZZ任意个字符>";
    $k = 'XXXX';
    echo preg_replace("/<([^>]*?{$k}[^>]*)>/", '[$1]', $str);
    [任意个字符XXXX任意个字符]<任意个字符ZZZZ任意个字符>
    $k = 'ZZZZ';
    echo preg_replace("/<([^>]*?{$k}[^>]*)>/", '[$1]', $str);
    <任意个字符XXXX任意个字符>[任意个字符ZZZZ任意个字符]