Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Удаление всего, что не входит в квадратные скобки
Форумы портала PHP.SU » PHP » Регулярные выражения » Удаление всего, что не входит в квадратные скобки

Страниц (1): [1]
 

1. Костэн - 03 Августа, 2011 - 14:31:09 - перейти к сообщению
Доброго времени суток. Возникла затруднительная ситуация. Есть строка следующего содержания - "[1] текст 2011". Подскажите, каким образом можно удалить всё, кроме [1] ?
2. DeepVarvar - 03 Августа, 2011 - 14:54:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. preg_match("/(\[1\])/",$str,$match);
  2. echo $match[1];
3. Костэн - 03 Августа, 2011 - 15:12:28 - перейти к сообщению
С preg_match я знаю как реализовать данное действие. Как это сделать с preg_replace ?
4. DeepVarvar - 03 Августа, 2011 - 15:30:06 - перейти к сообщению
Костэн пишет:
Как это сделать с preg_replace ?

А зачем реплейс?
А вдруг того что вы хотите реплейснуть в строке не окажется?
Лучше уж проверить матчем,
да и заодно получить результат с которым ТОЧНО можно работать дальше,
и он не окажется пустой строкой.
Или вы думаете иначе?
5. EuGen - 03 Августа, 2011 - 15:33:57 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $text='[1] тест [2] тест [3] []';
  2. $text=rtrim(ltrim(preg_replace('/^.*?\[|\].*?\[|\].*?$/u', '][', $text),']'), '[');
  3. var_dump($text);

Оно же через substr, но если строка пустая, то правильнее все же проверять концевые [ и ] через ltrim/rtrim
6. Костэн - 03 Августа, 2011 - 15:47:11 - перейти к сообщению
DeepVarvar пишет:
Или вы думаете иначе?


1. С функцией preg_replace необходимого результата, в моей ситуации, можно добиться быстрее, так как удаление ненужных цифр и букв будет осуществляться в цикле. Моя ошибка, неполностью описал обстановку.
2. Данные, подходящие под шаблон поиска присутствуют в каждой строке.
(Добавление)
EuGen пишет:
Оно же через substr, но если строка пустая, то правильнее все же проверять концевые [ и ] через ltrim/rtrim


Большое спасибо за помощь. Всё никак не доберусь до плотного изучения регулярных выражений.

 

Powered by ExBB FM 1.0 RC1