| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Компиляция регулярок в PHP |
| Автор: BobiKK 26.7.2006, 08:52 |
| Сообственно, сабж. Порылся в гуглях, что-то ответа так и не нашел. Компилируются ли регулярки в PHP? |
| Автор: szz 26.7.2006, 09:24 |
| Неа ))) |
| Автор: ZlojEzh 26.7.2006, 09:30 |
| не знаю, это ли ты имел ввиду, но посмотри http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php, модификатор S |
| Автор: BobiKK 26.7.2006, 09:57 |
| По описанию, конечно, похоже на аналог компиляции регулярок в PERLe, но почему слово компиляция не употребляется? |
| Автор: szz 26.7.2006, 10:32 |
| Не это совсем не то. Ты имел ввиду, что можно создать регулярку, скомпилировать ее и потом использовать с разными строками уже скомпиленную, чтоб быстрее работало? Так, как это можно делать в перле или в С? Так вот, в PHP этого делать нельзя - я тоже когда-то копался искал такое и ничего не нашел. |
| Автор: BobiKK 26.7.2006, 10:39 |
| Да мне просто не так давно справочник PERLовский попался, и там что-то было про компиляцию регулярок. Вот мне и интересно стало, есть ли такая фича в PHP |
| Автор: szz 26.7.2006, 10:42 |
| Да, компиляция регулярок это супер фича, если ей, конечно, уметь правильно пользоваться. там ведь прикол в том, что на компиляцию тратится время, и если ты собираешься использовать регулярку всего один-два раза, то лучше ее не компилировать - быстрее будет. Но все эти разглогольствования никчему, ибо в PHP такого нету! |
| Автор: BobiKK 27.7.2006, 08:36 | ||
| Хм, а другие источники сказали, что компилятся Добавлено @ 08:39 Во, у кого-то откопал:
|
| Автор: szz 27.7.2006, 10:58 | ||
| Блин, разумеется движку надо привести этото стринг, который ты ему даешь, в какой-то удобоваримый для себя код ))) Я имею ввиду следующее: Сделай так, чтоб какое-то выражение скомпилировалось и хранилось отдельно - и потом чтоб ты мог свое это отдельно хранящееся скомпилированное выражение использовать для поиска в 100 разных строках текста! Именно скомпилированное - не строку с регулярной абракадаброй, а именно необратимо скомпиленный байт-код, соответствующий выражению. Сделал? Нет, не сделал. А почему? А потому, что такое невозможно в PHP. А что касается таких источников, как php шные логи, то могу тебе следующее показать:
Скажи мне, что ты понял из этого сообщения. О чем тебе говорит фраза T_PAAMAYIM_NEKUDOTAYIM? |
| Автор: vasac 27.7.2006, 11:35 |
| Скомпилировать то регулярку для того чтобы потом ее уже скомпиленную использовать нельзя. Однако когда она комилится движком результат кэшируется и если вызвать ту же регулярку второй раз, она будет работать уже быстрее. |
| Автор: GiV 27.7.2006, 11:46 | ||
С Вашим то местом проживания грешно не знать =) (2 раза двоеточие, только PHP5 версии). Ловил такую ошибку на конструкции
|
| Автор: szz 27.7.2006, 11:53 | ||
Я-то прекрасно знаю ))) Просто я хотел подчеркнуть то, что порой разработчики пхп ошибаются. Люди ведь, млин!
Понятно это, но никаких средств по управлению этим у меня нет Это как автомобилем с автоматической коробкой управлять Вот в С я обязан сам регулярки компилить, возиться с этим (что, кстати, делать не хочется) вручную. Можно, конечно, обертку сделать. Как всегда в С |
| Автор: AztEK 27.7.2006, 12:18 |
| PCRE по умолчанию кешируются. Так что можно считать, что и компилируются автоматически. |
| Автор: BobiKK 27.7.2006, 12:20 | ||
А секвентальный режим зачем тогда? |
| Автор: szz 27.7.2006, 12:28 | ||
Ну ладно, дадно, полноте спорить ))) Сдаюсь |