Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компиляция регулярок в PHP 
:(
    Опции темы
BobiKK
Дата 26.7.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Сообственно, сабж. Порылся в гуглях, что-то ответа так и не нашел. Компилируются ли регулярки в PHP? 
PM MAIL   Вверх
szz
Дата 26.7.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Неа ))) 


--------------------
PM   Вверх
ZlojEzh
Дата 26.7.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 10
Всего: 15



не знаю, это ли ты имел ввиду, но посмотри http://www.php.net/manual/en/reference.pcr...n.modifiers.php, модификатор S 
PM MAIL ICQ   Вверх
BobiKK
Дата 26.7.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



По описанию, конечно, похоже на аналог компиляции регулярок в PERLe, но почему слово компиляция не употребляется? smile 
PM MAIL   Вверх
szz
Дата 26.7.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Не это совсем не то.
   Ты имел ввиду, что можно создать регулярку, скомпилировать ее и потом использовать с разными строками уже скомпиленную, чтоб быстрее работало? Так, как это можно делать в перле или в С?
  Так вот, в PHP этого делать нельзя - я тоже когда-то копался искал такое и ничего не нашел. 


--------------------
PM   Вверх
BobiKK
Дата 26.7.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Да мне просто не так давно справочник PERLовский попался, и там что-то было про компиляцию регулярок. Вот мне и интересно стало, есть ли такая фича в PHP 
PM MAIL   Вверх
szz
Дата 26.7.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Да, компиляция регулярок это супер фича, если ей, конечно, уметь правильно пользоваться.
   там ведь прикол в том, что на компиляцию тратится время, и если ты собираешься использовать регулярку всего один-два раза, то лучше ее не компилировать - быстрее будет.
 Но все эти разглогольствования никчему, ибо в PHP такого нету!  


--------------------
PM   Вверх
BobiKK
Дата 27.7.2006, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Хм, а другие источники сказали, что компилятся smile

Добавлено @ 08:39 
Во, у кого-то откопал:
Код

Warning: preg_replace(): Compilation failed: missing terminating ] for character class at offset 4419 in 
 
PM MAIL   Вверх
szz
Дата 27.7.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Блин, разумеется движку надо привести этото стринг, который ты ему даешь, в какой-то удобоваримый для себя код )))

   Я имею ввиду следующее:
Сделай так, чтоб какое-то выражение скомпилировалось и хранилось отдельно - и потом чтоб ты мог свое это отдельно хранящееся скомпилированное выражение использовать для поиска в 100 разных строках текста!
    Именно скомпилированное - не строку с регулярной абракадаброй, а именно необратимо скомпиленный байт-код, соответствующий выражению.
    Сделал? Нет, не сделал. А почему? А потому, что такое невозможно в PHP.
   

А что касается таких источников, как php шные логи, то могу тебе следующее показать:
Цитата
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in D:\htdocs\index.php on line 9

   Скажи мне, что ты понял из этого сообщения.
 О чем тебе говорит фраза T_PAAMAYIM_NEKUDOTAYIM? 


--------------------
PM   Вверх
vasac
Дата 27.7.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Скомпилировать то регулярку для того чтобы потом ее уже скомпиленную использовать нельзя. Однако когда она комилится движком результат кэшируется и если вызвать ту же регулярку второй раз, она будет работать уже быстрее. 
PM WWW   Вверх
GiV
Дата 27.7.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(szz @  27.7.2006,  10:58 Найти цитируемый пост)
 О чем тебе говорит фраза T_PAAMAYIM_NEKUDOTAYIM?  

С Вашим то местом проживания грешно не знать =) (2 раза двоеточие, только PHP5 версии). Ловил такую ошибку на конструкции
Код

$adapterName = $adapter . 'DatabaseAdapter';

return $adapterName::connect( $dbHost, $dbUser, $dbPassword, $dbName );
 
PM MAIL WWW ICQ   Вверх
szz
Дата 27.7.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Я-то прекрасно знаю )))   Просто я хотел подчеркнуть то, что порой разработчики пхп ошибаются.  Люди ведь, млин!

Цитата
Скомпилировать то регулярку для того чтобы потом ее уже скомпиленную использовать нельзя. Однако когда она комилится движком результат кэшируется и если вызвать ту же регулярку второй раз, она будет работать уже быстрее.

   Понятно это, но никаких средств по управлению этим у меня нет Это как автомобилем с автоматической коробкой управлять smile  Если меня спросят "Как мне переключить с третьей на вторую?" я отвечу - "никак!"

   Вот в С я обязан сам регулярки компилить, возиться с этим (что, кстати, делать не хочется) вручную. Можно, конечно, обертку сделать. Как всегда в С smile 


--------------------
PM   Вверх
AztEK
Дата 27.7.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



PCRE по умолчанию кешируются. Так что можно считать, что и компилируются автоматически. 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
BobiKK
Дата 27.7.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



Цитата(szz @  27.7.2006,  11:53 Найти цитируемый пост)
и меня спросят "Как мне переключить с третьей на вторую?" я отвечу - "никак!"

А секвентальный режим зачем тогда? smile
 
PM MAIL   Вверх
szz
Дата 27.7.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата
А секвентальный режим зачем тогда? 


Ну ладно, дадно, полноте спорить )))  Сдаюсь  smile  


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1374 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.