Как удалить строку между конкретными символами, используя регулярные выражения в PHP? - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть строка, как показано ниже,

$string = "test coontevt [gallery include=\"12,24\"] first [gallery include=\"12,24\"] second";

мне нужно удалить строку, начинающуюся с [gallery до первого значения ].

я уже использую этот,

$string12 = preg_replace('/[gallery.+?)+(/])/i', '', $string);

но я получаю только пустую строку.

Наконец, я хочу получить результат для приведенной выше строки:

$string ="test coontevt first second".

Как я могу сделать это с помощью регулярного выражения?.

плз, помогите мне?

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Символ [ является метасимволом регулярного выражения. Чтобы соответствовать буквальному значению [, вам нужно избежать его.

$string12 = preg_replace('/\[gallery.+?\]/i', '', $string);

или

$string12 = preg_replace('/\[gallery[^\]]+\]/i', '', $string);
1 голос
/ 28 ноября 2011

Вы должны выйти из квадратных скобок

$string12 = preg_replace('/\[gallery.+?\]/i', '', $string);

Круглые скобки не нужны, поэтому я удалил их, а также квантификатор между этими скобками и косую черту перед последней квадратной скобкой.

Чтобы избежать нескольких пробелов в результате, я бы сопоставил также окружающие пробелы и заменил бы на 1 пробел.

\s+\[gallery.+?\]\s+ и замените один пробел

$string12 = preg_replace('/\s+\[gallery.+?\]\s+/i', ' ', $string);

Смотрите это выражение здесь онлайн на Regexr

0 голосов
/ 28 ноября 2011

Попробуйте это так:

$string12 = preg_replace('/\[gallery[^\]]+\]/i', '', $string);

[^\]]+ означает, что может быть один или несколько символов, которые не ].И нет необходимости в ( и ), если вы не хотите использовать обратные ссылки.

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