【问题标题】:php match a string from other stringphp 匹配来自其他字符串的字符串
【发布时间】:2013-08-28 06:55:53
【问题描述】:

我有一个字符串为$test = 'aa,bb,cc,dd,ee',其他字符串为$match='cc'。我希望结果为$result='aa,bb,dd,ee'。 我无法获得所需的结果,因为不确定哪个 PHP 函数可以提供所需的输出。

另外,如果我有一个字符串为$test = 'aa,bb,cc,dd,ee',其他字符串为$match='cc'。我希望结果为$match=''。即如果在 $test 中找到 $match 则可以跳过 $match

任何帮助将不胜感激。

【问题讨论】:

    标签: php arrays string


    【解决方案1】:

    你可以试试:

    $test   = 'aa,bb,cc,dd,ee';
    $match  = 'cc';
    
    $output = trim(str_replace(',,', ',', str_replace($match, '', $test), ','));
    

    或:

    $testArr = explode(',', $test);
    if(($key = array_search($match, $testArr)) !== false) {
      unset($testArr[$key]);
    }
    $output  = implode(',', $testArr);
    

    【讨论】:

    • 第二种方案更好:)
    • 你能帮忙吗?对于相同的代码,如果需要的结果为 $test = 'aa,bb,cc,dd,ee' 和其他字符串为 $match='cc'。我希望结果为 $match='' 即如果它与字符串匹配,则 $match 变量可以为空或可以跳过
    • 嗯,我想他只是想在 if 条件中使用$match = '';。 (我的意思是第二种解决方案)
    【解决方案2】:

    试试preg_replace

    $test = 'aa,bb,cc,dd,ee';
    
    $match ='cc';
    
    echo $new = preg_replace('/'.$match.',|,'.$match.'$/', '', $test);
    

    输出

    aa,bb,dd,ee
    

    【讨论】:

    • 如果cc 位于末尾会怎样? aa,bb,dd,cc
    • ^^ "/$match,|,$match$"?
    【解决方案3】:
     $test = 'aa,bb,cc,dd,ee';
     $match='cc';
    echo trim(str_replace(',,', ',' , str_replace($match,'',$test)),',');
    

    DEMO

    【讨论】:

    • $match='aa' 会给你,bb,cc,dd,ee' - 看看我的答案 - 涉及trim 方法。
    【解决方案4】:

    试试这个:

    $test = 'aa,bb,cc,dd,ee';
    $match = 'cc';
    
    $temp = explode(',', $test);    
    unset($temp[ array_search($match, $temp) ] );
    $result = implode(',', $temp);
    
    echo $result;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-14
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2020-02-29
      • 2011-09-04
      相关资源
      最近更新 更多