XCII. тСМЙЖХХ ДКЪ ПЮАНРШ Я ПЕЦСКЪПМШЛХ БШПЮФЕМХЪЛХ (Perl-ЯНБЛЕЯРХЛШЕ)

бБЕДЕМХЕ

яХМРЮЙcХЯ ЬЮАКНМНБ, ХЯОНКЭГСЕЛШУ Б ТСМЙЖХЪУ ЩРНЦН ПЮГДЕКЮ, БН ЛМНЦНЛ ОНУНФ МЮ ЯХМРЮЙЯХЯ, ХЯОНКЭГСЕЛШИ Б Perl. бШПЮФЕМХЕ ДНКФМН АШРЭ ГЮЙКЧВЕМН Б НЦПЮМХВХРЕКХ, МЮОПХЛЕП, ОПЪЛШЕ ЯКЕЬХ '/'. нЦПЮМХВХРЕКЕЛ ЛНЦСР БШЯРСОЮРЭ ОПНХГБНКЭМШЕ ЯХЛБНКШ, ЙПНЛЕ АСЙБЕММН-ЖХТПНБШУ Х НАПЮРМНЦН ЯКЕЬЮ '\'. еЯКХ НЦПЮМХВХРЕКЭМШИ ЯХЛБНК БЯРПЕВЮЕРЯЪ Б ЬЮАКНМЕ, ЕЦН МЕНАУНДХЛН ЩЙПЮМХПНБЮРЭ. мЮВХМЮЪ Я PHP 4.0.4 Б ЙЮВЕЯРБЕ НЦПЮМХВХРЕКЪ ДНЯРСОМШ ЙНЛАХМЮЖХХ, ХЯОНКЭГСЕЛШЕ Б Perl: (), {}, [] Х <>. оНДПНАМЕИ НА ЩРНЛ ПЮЯЯЙЮГЮМН Б ПЮГДЕКЕ яХМРЮЙЯХЯ ПЕЦСКЪПМШУ БШПЮФЕМХИ.

оНЯКЕ ГЮЙПШБЮЧЫЕЦН НЦПЮМХВХРЕКЪ ЛНФМН СЙЮГШБЮРЭ ПЮГКХВМШЕ ЛНДХТХЙЮРНПШ, БКХЪЧЫХЕ МЮ ПЮАНРС ПЕЦСКЪПМШУ БШПЮФЕМХИ. дЕРЮКЭМЮЪ ХМТНПЛЮЖХЪ ДНЯРСОМЮ Б ПЮГДЕКЕ лНДХТХЙЮРНПШ ЬЮАКНМНБ.

PHP РЮЙФЕ ОНДДЕПФХБЮЕР POSIX-ЯНБЛЕЯРХЛШЕ ПЕЦСКЪПМШЕ БШПЮФЕМХЪ, ХЯОНКЭГСЪ ЯННРБЕРЯРБСЧЫХИ ЛНДСКЭ.

рПЕАНБЮМХЪ

оНДДЕПФЙЮ Perl-ЯНБЛЕЯРХЛШУ ПЕЦСКЪПМШУ БШПЮФЕМХИ ПЕЮКХГНБЮМЮ Б ЯННРБЕРЯРБСЧЫЕИ PCRE АХАКХНРЕЙЕ, ЙНРНПЮЪ ПЮЯОПНЯРПЮМЪЕРЯЪ Я НРЙПШРШЛ ХЯУНДМШЛ ЙНДНЛ. юБРНПНЛ АХАКХНРЕЙХ ЪБКЪЕРЯЪ Philip Hazel, ЮБРНПЯЙХЕ ОПЮБЮ ОПХМЮДКЕФЮР ЙЕЛАПХДФЯЙНЛС СМХБЕПЯХРЕРС, юМЦКХЪ. хЯУНДМШИ ЙНД ДНЯРСОЕМ ОН ЯЯШКЙЕ ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.

Внимание

рЮЙФЕ БШ ДНКФМШ СВХРШБЮРЭ МЕЙНРНПШЕ НЦПЮМХВЕМХЪ PCRE. нГМЮЙНЛЭРЕЯЭ Я http://www.pcre.org/pcre.txt ДКЪ ОНКСВЕМХЪ АНКЕЕ ОНКМНИ ХМТНПЛЮЖХХ.

сЯРЮМНБЙЮ

мЮВХМЮЪ Я PHP 4.2.0, Perl-ЯНБЛЕЯРХЯЛШЕ ПЕЦСКЪПМШЕ БШПЮФЕМХЪ (PCRE) ДНЯРСОМШ ОН СЛНКВЮМХЧ. бШ ЛНФЕРЕ НРЙКЧВХРЭ ХУ ОПХ ОНЛНЫХ --without-pcre-regex. б ЯКСВЮЕ, ЕЯКХ БШ УНРХРЕ ХЯОНКЭГНБЮРЭ АХАКХНРЕЙС, НРКХВМСЧ НР ХДСЫЕИ Б ЯРЮМДЮПРМНИ ОНЯРЮБЙЕ пмп, ХЯОНКЭГСИРЕ НОЖХЧ --with-pcre-regex=DIR ДКЪ СЙЮГЮМХЪ ДХПЕЙРНПХХ, ЯНДЕПФЮЫЕИ МЕНАУНДХЛШЕ ТЮИКШ. еЯКХ С БЮЯ БЕПЯХЪ PHP ЛЕМЕЕ, ВЕЛ 4.2.0, БЮЛ МЕНАУНДХЛН ЯЙНМТХЦСПХПНБЮРЭ Х ОЕПЕЯНАПЮРЭ PHP Я НОЖХЕИ --with-pcre-regex[=DIR], ВРНАШ БЙКЧВХРЭ ОНДДЕПФЙС PCRE-ТСМЙЖХИ.

бЕПЯХЪ PHP ДКЪ Windows ХЛЕЕР БЯРПНЕММСЧ ОНДДЕПФЙС ДЮММНЦН ПЮЯЬХПЕМХЪ. щРН НГМЮВЮЕР, ВРН ДКЪ ХЯОНКЭГНБЮМХЪ ДЮММШУ ТСМЙЖХИ МЕ РПЕАСЕРЯЪ ГЮЦПСГЙЮ МХЙЮЙХУ ДНОНКМХРЕКЭМШУ ПЮЯЬХПЕМХИ.

мЮЯРПНИЙЮ БН БПЕЛЪ БШОНКМЕМХЪ

дЮММНЕ ПЮЯЬХПЕМХЕ МЕ НОПЕДЕКЪЕР МХЙЮЙХЕ ДХПЕЙРХБШ ЙНМТХЦСПЮЖХХ Б php.ini.

рХОШ ПЕЯСПЯНБ

дЮММНЕ ПЮЯЬХПЕМХЕ МЕ НОПЕДЕКЪЕР МХЙЮЙХЕ РХОШ ПЕЯСПЯНБ.

оПЕДНОПЕДЕКЕММШЕ ЙНМЯРЮМРШ

оЕПЕВХЯКЕММШЕ МХФЕ ЙНМЯРЮМРШ НОПЕДЕКЕМШ ДЮММШЛ ПЮЯЬХПЕМХЕЛ Х ЛНЦСР АШРЭ ДНЯРСОМШ РНКЭЙН Б РНЛ ЯКСВЮЕ, ЕЯКХ PHP АШК ЯНАПЮМ Я ОНДДЕПФЙНИ ЩРНЦН ПЮЯЬХПЕМХЪ ХКХ ФЕ Б РНЛ ЯКСВЮЕ, ЕЯКХ ДЮММНЕ ПЮЯЬХПЕМХЕ ОНДЦПСФЮЕРЯЪ БН БПЕЛЪ БШОНКМЕМХЪ.

Таблица 1. PREG ЙНМЯРЮМРШ

ЙНМЯРЮМРЮНОХЯЮМХЕ
PREG_PATTERN_ORDER лЕМЪЕР ОНПЪДНЙ ЩКЕЛЕМРНБ Б ПЕГСКЭРХПСЧЫЕЛ ЛЮЯЯХБЕ РЮЙ, ВРНАШ ЩКЕЛЕМР $matches[0] ЯНДЕПФЮК ОНКМШЕ БУНФДЕМХЪ ЬЮАКНМЮ, ЩКЕЛЕМР $matches[1] - БЯЕ БУНФДЕМХЪ ОЕПБНИ БГЪРНИ Б ЙПСЦКШЕ ЯЙНАЙХ ОНДЛЮЯЙХ, Х РЮЙ ДЮКЕЕ. рНКЭЙН reg_match_all() ПЕЮЦХПСЕР МЮ ДЮММШИ ЛНДХТХЙЮРНП; НЯРЮКЭМШЛХ ТСМЙЖХЪЛХ НМ ХЦМНПХПСЕРЯЪ.
PREG_SET_ORDER лЕМЪЕР ОНПЪДНЙ ЩКЕЛЕМРНБ Б ПЕГСКЭРХПСЧЫЕЛ ЛЮЯЯХБЕ РЮЙ, ВРНАШ ЩКЕЛЕМР $matches[0] ЯНДЕПФЮК ОЕПБШИ МЮАНП БУНФДЕМХИ (ОНКМНЕ БУНФДЕМХЕ, БУНФДЕМХЕ ОЕПБНИ ОНДЛЮЯЙХ, ГЮЙКЧВЕММНИ Б ЙПСЦКШЕ ЯЙНАЙХ...), ЮМЮКНЦХВМН ЩКЕЛЕМР $matches[1] - БРНПНИ МЮАНП БУНФДЕМХИ, Х РЮЙ ДЮКЕЕ. рНКЭЙН reg_match_all() ПЕЮЦХПСЕР МЮ ДЮММШИ ЛНДХТХЙЮРНП; НЯРЮКЭМШЛХ ТСМЙЖХЪЛХ НМ ХЦМНПХПСЕРЯЪ.
PREG_OFFSET_CAPTURE яЛНРПХРЕ НОХЯЮМХЕ ТКЮЦЮ PREG_SPLIT_OFFSET_CAPTURE. дЮММШИ ТКЮЦ ДНЯРСОЕМ Б PHP 4.3.0 Х БШЬЕ.
PREG_SPLIT_NO_EMPTY б ЯКСВЮЕ, ЕЯКХ ЩРНР ТКЮЦ СЙЮГЮМ, ТСМЙЖХЪ preg_split() БЕПМЕР РНКЭЙН МЕОСЯРШЕ ОНДЯРПНЙХ.
PREG_SPLIT_DELIM_CAPTURE б ЯКСВЮЕ, ЕЯКХ ЩРНР ТКЮЦ СЙЮГЮМ, БШПЮФЕМХЕ, ГЮЙКЧВЕММНЕ Б ЙПСЦКШЕ ЯЙНАЙХ Б ПЮГДЕКЪЧЫЕЛ ЬЮАКНМЕ, РЮЙФЕ ХГБКЕЙЮЕРЯЪ ХГ ГЮДЮММНИ ЯРПНЙХ Х БНГБПЮЫЮЕРЯЪ ТСМЙЖХЕИ. щРНР ТКЮЦ АШК ДНАЮБКЕМ Б PHP 4.0.5.
PREG_SPLIT_OFFSET_CAPTURE б ЯКСВЮЕ, ЕЯКХ ЩРНР ТКЮЦ СЙЮГЮМ, ДКЪ ЙЮФДНИ МЮИДЕММНИ ОНДЯРПНЙХ АСДЕР СЙЮГЮМЮ ЕЕ ОНГХЖХЪ Б ХЯУНДМНИ ЯРПНЙЕ. мЕНАУНДХЛН ОНЛМХРЭ, ВРН ЩРНР ТКЮЦ ЛЕМЪЕР ТНПЛЮР БНГБПЮЫЮЕЛШУ ДЮММШУ: ЙЮФДНЕ БУНФДЕМХЕ БНГБПЮЫЮЕРЯЪ Б БХДЕ ЛЮЯЯХБЮ, Б МСКЕБНЛ ЩКЕЛЕМРЕ ЙНРНПНЦН ЯНДЕПФХРЯЪ МЮИДЕММЮЪ ОНДЯРПНЙЮ, Ю Б ОЕПБНЛ - ЯЛЕЫЕМХЕ. щРНР ТКЮЦ ДНЯРСОЕМ Б PHP 4.3.0 Х БШЬЕ Х ХЯОНКЭГСЕРЯЪ РНКЭЙН Б ТСМЙЖХХ preg_split().

оПХЛЕПШ

Пример 1. оПХЛЕПШ ОПЮБХКЭМШУ ЬЮАКНМНБ

  • /<\/\w+>/

  • |(\d{3})-\d+|Sm

  • /^(?i)php[34]/

  • {^\s+(\s+)?$}

Пример 2. оПХЛЕПШ МЕОПЮБХКЭМШУ ЬЮАКНМНБ

  • /href='(.*)' - ОПНОСЫЕМ ГЮЙПШБЮЧЫХИ НЦПЮМХВХРЕКЭ

  • /\w+\s*\w+/J - МЕХГБЕЯРМШИ ЛНДХТХЙЮРНП 'J'

  • 1-\d3-\d3-\d4| - ОПНОСЫЕМ НРЙПШБЮЧЫХИ НЦПЮМХВХРЕКЭ

Содержание
лНДХТХЙЮРНПШ ЬЮАКНМНБ -- нОХЯШБЮЕР БНГЛНФМШЕ ЛНДХТХЙЮРНПШ ЬЮАКНМНБ Perl-ЯНБЛЕЯРХЛШУ ПЕЦСКЪПМШУ БШПЮФЕМХИ (PCRE)
яХМРЮЙЯХЯ ПЕЦСКЪПМШУ БШПЮФЕМХИ -- нОХЯЮМХЕ ЯХМРЮЙЯХЯЮ Perl-ЯНБЛЕЯРХЛШУ ПЕЦСКЪПМШУ БШПЮФЕМХИ (PCRE)
preg_grep --  бНГБПЮЫЮЕР ЛЮЯЯХБ БУНФДЕМХИ, ЙНРНПШЕ ЯННРБЕРЯРБСЧР ЬЮАКНМС
preg_match_all -- бШОНКМЪЕР ЦКНАЮКЭМШИ ОНХЯЙ ЬЮАКНМЮ Б ЯРПНЙЕ
preg_match -- бШОНКМЪЕР ОПНБЕПЙС МЮ ЯННРБЕРЯРБХЕ ПЕЦСКЪПМНЛС БШПЮФЕМХЧ
preg_quote -- щЙПЮМХПСЕР ЯХЛБНКШ Б ПЕЦСКЪПМШУ БШПЮФЕМХЪУ
preg_replace_callback -- бШОНКМЪЕР ОНХЯЙ ОН ПЕЦСКЪПМНЛС БШПЮФЕМХЧ Х ГЮЛЕМС Я ХЯОНКЭГНБЮМХЕЛ ТСМЙЖХХ НАПЮРМНЦН БШГНБЮ
preg_replace -- бШОНКМЪЕР ОНХЯЙ Х ГЮЛЕМС ОН ПЕЦСКЪПМНЛС БШПЮФЕМХЧ
preg_split -- пЮГАХБЮЕР ЯРПНЙС ОН ПЕЦСКЪПМНЛС БШПЮФЕМХЧ

HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ