Как удалить пользовательский тег и содержимое между в PHP? - PullRequest
0 голосов
/ 26 августа 2011

Скажите, есть ли у меня этот тег в строке:
[phpbay]{keyword}, 30, "", "", "", "", "", "", "", "", "", "", "", "", "2", "", "", ""[/phpbay]
Могу ли я удалить его и содержимое между тегами?Может быть, с помощью регулярных выражений?Спасибо!

Ответы [ 5 ]

1 голос
/ 26 августа 2011
preg_replace('~\[phpbay\](.+?)\[/phpbay\]~','',$string);
1 голос
/ 26 августа 2011
$string = "[phpbay]blah blah blah [/phpbay]";
$stripped_string = preg_replace('~\[\/?phpbay\]~', '', $string);

если я правильно читаю ваш вопрос и хочу, чтобы осталась только часть "бла-бла-бла".

1 голос
/ 26 августа 2011

Этот regEx даст вам все, что между этими двумя тегами:

\[phpbay](.+)\[/phpbay]
1 голос
/ 26 августа 2011

Да, здесь может быть возможно регулярное выражение:

$str = preg_replace('#\[phpbay][{\w},\s\d"]+\[/phpbay]#', "", $str);

Это просто удаляет «тег» из строки, если он содержит только такие символы, как в вашем примере.Если вы хотите удалить его только в том случае, если он содержит, например, ваш пример 30 или конкретный {keyword}, вам нужно будет сделать регулярное выражение более конкретным.может помочь.

0 голосов
/ 26 августа 2011

Я бы лично использовал 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);

Пробовал и проверял, работает.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...