Или более кокретно. Столкнулся с задачей. В строке убрать символы кроме определенных. Решил сделать так: заменить с помощью ereg_replace() "все кроме набора символов а,б,в" на пустую строку. Но не нашел, как записать выражение "все кроме набора символов а,б,в".
Спустя 36 минут, 30 секунд (15.01.2009 - 16:23) kirik написал(а):
ferol,
PHP |
$str = 'abcdefghijklkmop'; |
Спустя 1 час, 31 минута, 27 секунд (15.01.2009 - 17:55) ferol написал(а):
То есть не в регулярном выражении выглядит ^? Спасибо! То что нужно!
preg_replace вместо ereg_replace критично?
preg_replace вместо ereg_replace критично?
Спустя 42 минуты, 50 секунд (15.01.2009 - 18:38) Adamant написал(а):
IMHO мне больше нравятся "Perl-регулярки"(preg_replace и т.д.) чем POSIX(ereg_replace ...). Они обычно более глазу приятнее и понятнее. Да и обычно меньше писанины, поэтому я POSIX-регулярки вообще не юзаю.
Д.Котеров, А.Костарев "PHP5" 452-454 стр.
"Нужно учитывать, что формат POSIX на практике медленно, но верно устаревает, а язык PCRE обходит его практически по всем параметрам (и по количеству возможностей и по скорости на большинстве выражений).
...
...
в большинстве типовых случаев выражения PCRE показывают значительно лучшие показатели, чем POSIX."
PS. Скузми за опечатку, думаю все мысль поняли правильно.
Д.Котеров, А.Костарев "PHP5" 452-454 стр.
"Нужно учитывать, что формат POSIX на практике медленно, но верно устаревает, а язык PCRE обходит его практически по всем параметрам (и по количеству возможностей и по скорости на большинстве выражений).
...
...
в большинстве типовых случаев выражения PCRE показывают значительно лучшие показатели, чем POSIX."
PS. Скузми за опечатку, думаю все мысль поняли правильно.
Спустя 39 минут, 2 секунды (15.01.2009 - 19:17) Sylex написал(а):
Цитата (Adamant @ 15.01.2009 - 21:38) |
выражения PCRE показывают значительно лучшие показатели, чем PCRE |
Спустя 1 час, 12 минут, 28 секунд (15.01.2009 - 20:29) Alchemist написал(а):
Спустя 56 минут, 39 секунд (15.01.2009 - 21:26) kirik написал(а):
=))))
ferol, Adamant, перловые (preg) регулярки еще и быстрее обрабатываются при большом объеме текста.
ferol, Adamant, перловые (preg) регулярки еще и быстрее обрабатываются при большом объеме текста.
Спустя 19 часов, 2 минуты, 41 секунда (16.01.2009 - 16:29) ferol написал(а):
Цитата (kirik @ 15.01.2009 - 18:26) |
=)))) ferol, Adamant, перловые (preg) регулярки еще и быстрее обрабатываются при большом объеме текста. |
Спасибо, это как раз то что надо. Но в моем справочнике написано:
^ начало утверждения субъекта (или строки, в многострочном режиме)
Но код работает так, как мне надо. Может у меня справочник неправильный?
И еще пара вопросов, есть функция наподобие рreg_replace, которая заменяет не все куски в тексте, а только первый? Есть функция, которая в тексте находит кусок, подходящий к регулярному выражению, и выдает его значение.
Тоесть foo('/^[abc]/',$str) выдал бы первый символ, не совпадающий с a,b и с.
Спустя 2 часа, 14 минут, 12 секунд (16.01.2009 - 18:43) dfsq написал(а):
к тому же поддержка posix уже исключена из ядра php 6
Спустя 33 минуты, 42 секунды (16.01.2009 - 19:17) Adamant написал(а):
Если "крышка" (^) ставится внутри квадратных скобок - [], это означает, что не должно быть набора символов указанных внутри []. Например: '/[^abc]/' - искать любой символ кроме букв a b и с
Если "крышка" ^ ставится сначала паттерна, это соответствует началу строки. Пример: '/^[^abc]/' - искать любой символ с самого начала строки кроме букв a b и с
Если "крышка" ^ ставится сначала паттерна, это соответствует началу строки. Пример: '/^[^abc]/' - искать любой символ с самого начала строки кроме букв a b и с
PHP |
<?php |
Спустя 17 часов, 28 минут, 24 секунды (17.01.2009 - 12:45) ferol написал(а):
Цитата (Adamant @ 16.01.2009 - 16:17) | ||
|
Опечатка. То что мне нужно, записывается так.
PHP |
<?php |
Спустя 3 часа, 20 минут, 1 секунда (17.01.2009 - 16:05) Adamant написал(а):
Цитата (ferol @ 17.01.2009 - 16:45) | ||||||
Опечатка. То что мне нужно, записывается так.
|
Опечатки нет. Если вас смущает то что "крышка" ^ стоит в самом начале паттерна в данном случае в принципе роли не играет, но я ее специально поставил туда чтобы проиллюстрировать ваш вопрос о:
" Но в моем справочнике написано:
^ начало утверждения субъекта (или строки, в многострочном режиме)
Но код работает так, как мне надо. Может у меня справочник неправильный?"
Так что это не должно вас смущать. Принципиальной разницы между
preg_match('/^[^abc]{1}/', $text, $arr);
и
preg_match('/[^abc]{1}/', $text, $arr);
Я не вижу.
Спустя 4 часа, 20 минут, 45 секунд (17.01.2009 - 20:26) Sylex написал(а):
Adamant
во 2-ом случае строка 'ax' попадет в шаблон, тогда как в 1-ом - нет, т.к. она начинается с a, что не допустимо
во 2-ом случае строка 'ax' попадет в шаблон, тогда как в 1-ом - нет, т.к. она начинается с a, что не допустимо