Найти подстроку и заменить ее на указанный символ - PullRequest
0 голосов
/ 14 сентября 2011

Я получил строку, построенную следующим образом:

$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]';

Я знаю все поля, которые могут встречаться, но не значения. Как мне этого добиться?

Надеюсь, это было описано достаточно ясно.

Ответы [ 3 ]

3 голосов
/ 14 сентября 2011

Вы можете использовать регулярное выражение и заменить найденную строку пустой строкой. Пожалуйста, посмотрите на эту функцию:

preg_replace

Удачи!

1 голос
/ 14 сентября 2011

Вы можете попробовать:

if(preg_match("/HUB_NENNWERT_KATALOG:\[.*\]/isU",$string){
    preg_replace("/HUB_NENNWERT_KATALOG:\[.*\]/isU","", $string);
}
0 голосов
/ 14 сентября 2011

Если структура строки всегда одинакова, возможно, это может быть другой подход:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...