Скажите, есть ли у меня этот тег в строке: [phpbay]{keyword}, 30, "", "", "", "", "", "", "", "", "", "", "", "", "2", "", "", ""[/phpbay] Могу ли я удалить его и содержимое между тегами?Может быть, с помощью регулярных выражений?Спасибо!
[phpbay]{keyword}, 30, "", "", "", "", "", "", "", "", "", "", "", "", "2", "", "", ""[/phpbay]
preg_replace('~\[phpbay\](.+?)\[/phpbay\]~','',$string);
$string = "[phpbay]blah blah blah [/phpbay]"; $stripped_string = preg_replace('~\[\/?phpbay\]~', '', $string);
если я правильно читаю ваш вопрос и хочу, чтобы осталась только часть "бла-бла-бла".
Этот regEx даст вам все, что между этими двумя тегами:
\[phpbay](.+)\[/phpbay]
Да, здесь может быть возможно регулярное выражение:
$str = preg_replace('#\[phpbay][{\w},\s\d"]+\[/phpbay]#', "", $str);
Это просто удаляет «тег» из строки, если он содержит только такие символы, как в вашем примере.Если вы хотите удалить его только в том случае, если он содержит, например, ваш пример 30 или конкретный {keyword}, вам нужно будет сделать регулярное выражение более конкретным.может помочь.
30
{keyword}
Я бы лично использовал str_replace или str_ireplace (без учета регистра)
$Find = array("[phpbay]","[/phpbay]"); $Replace = array("<b>","</b>"); $Source = "[phpbay]Hello World[/phpbay]"; //Couldn't get any simpler...Replace [phpbay]Content[/phpbay] with <b>Content</b> echo str_ireplace($Find,$Replace,$Source);
Пробовал и проверял, работает.
Надеюсь, это поможет!