【问题标题】:Find a substring and replace it to a specified char查找子字符串并将其替换为指定的字符
【发布时间】:2011-11-16 21:15:18
【问题描述】:

我得到了一个字符串,如下所示:

$string = 'HUB_NENNWERT_KATALOG:[0 TO 4.9],GREIFKRAFT_OEFFNEN_KATALOG:[2000 TO 5999],WERKSTUECKGEWICHT:[0 TO 14.9]';

这个字符串中的整数可以不同。 所以我想要的是,检查某个字段是否在字符串中,即'HUB_NENNWERT_KATALOG'。 如果返回 true,我想删除包括逗号在内的整个子字符串。所以它会像这样返回一个新的字符串:

$string = 'GREIFKRAFT_OEFFNEN_KATALOG:[2000 TO 5999],WERKSTUECKGEWICHT:[0 TO 14.9]';

我知道所有可能出现的字段,但不知道值。 我如何做到这一点?

希望描述得足够清楚。

【问题讨论】:

    标签: php replace substring


    【解决方案1】:

    您可以使用正则表达式并将找到的字符串替换为空字符串。请看这个函数:

    preg_replace

    祝你好运!

    【讨论】:

      【解决方案2】:

      你可以试试:

      if(preg_match("/HUB_NENNWERT_KATALOG:\[.*\]/isU",$string){
          preg_replace("/HUB_NENNWERT_KATALOG:\[.*\]/isU","", $string);
      }
      

      【讨论】:

        【解决方案3】:

        如果字符串的结构始终相同,也许这可能是另一种方法:

        $filters = array('HUB_NENNWERT_KATALOG', 'HUB_ISTWERT_KATALOG');
        $filtered = array();
        
        $string = 'HUB_NENNWERT_KATALOG:[0 TO 4.9],GREIFKRAFT_OEFFNEN_KATALOG:[2000 TO 5999],WERKSTUECKGEWICHT:[0 TO 14.9]';
        
        $checks = explode(',',$string);
        foreach($checks as $check) {
            $a = explode(':',$check);
            if(!in_array($a[0],$filters)) {
              $filtered [] = $check;
            }
        }
        
        $filtered_string = implode(',', $filtered);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-22
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多