查找子字符串并将其替换为指定的char

时间:2011-09-14 10:00:16

标签: php replace substring

我有一个字符串,如下所示:

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

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

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

我知道可能发生的字段,但不是值。 我如何实现这一目标?

希望它被描述得足够清楚。

3 个答案:

答案 0 :(得分:3)

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

preg_replace

祝你好运!

答案 1 :(得分:1)

你可以尝试:

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

答案 2 :(得分:0)

如果字符串的结构总是相同的,那么这可能是另一种方法:

$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);
相关问题