preg_match_all

(PHP 3>= 3.0.9, PHP 4 , PHP 5)

preg_match_all -- бШОНКМЪЕР ЦКНАЮКЭМШИ ОНХЯЙ ЬЮАКНМЮ Б ЯРПНЙЕ

нОХЯЮМХЕ

int preg_match_all ( string pattern, string subject, array matches [, int flags [, int offset]])

хЫЕР Б ЯРПНЙЕ subject БЯЕ ЯНБОЮДЕМХЪ Я ЬЮАКНМНЛ pattern Х ОНЛЕЫЮЕР ПЕГСКЭРЮР Б ЛЮЯЯХБ matches Б ОНПЪДЙЕ, НОПЕДЕКЪЕЛНЛ ЙНЛАХМЮЖХЕИ ТКЮЦНБ flags.

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

дНОНКМХРЕКЭМШИ ОЮПЮЛЕРП flags ЛНФЕР ЙНЛАХМХПНБЮРЭ ЯКЕДСЧЫХЕ ГМЮВЕМХЪ (МЕНАУНДХЛН ОНМХЛЮРЭ, ВРН ХЯОНКЭГНБЮМХЕ PREG_PATTERN_ORDER НДМНБПЕЛЕММН Я PREG_SET_ORDER АЕЯЯЛШЯКЕММН):

PREG_PATTERN_ORDER

еЯКХ ЩРНР ТКЮЦ СЯРЮМНБКЕМ, ПЕГСКЭРЮР АСДЕР СОНПЪДНВЕМ ЯКЕДСЧЫХЛ НАПЮГНЛ: ЩКЕЛЕМР $matches[0] ЯНДЕПФХР ЛЮЯЯХБ ОНКМШУ БУНФДЕМХИ ЬЮАКНМЮ, ЩКЕЛЕМР $matches[1] ЯНДЕПФХР ЛЮЯЯХБ БУНФДЕМХИ ОЕПБНИ ОНДЛЮЯЙХ, Х РЮЙ ДЮКЕЕ.

<?php
preg_match_all
("|<[^>]+>(.*)</[^>]+>|U",
    
"<b>example: </b><div align=left>this is a test</div>",
    
$out, PREG_PATTERN_ORDER);
echo
$out[0][0] . ", " . $out[0][1] . "\n";
echo
$out[1][0] . ", " . $out[1][1] . "\n";
?>

пЕГСКЭРЮР ПЮАНРШ ОПХЛЕПЮ:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

йЮЙ ЛШ БХДХЛ, $out[0] ЯНДЕПФХР ЛЮЯЯХБ ОНКМШУ БУНФДЕМХИ ЬЮАКНМЮ, Ю ЩКЕЛЕМР $out[1] ЯНДЕПФХР ЛЮЯЯХБ ОНДЯРПНЙ, ЯНДЕПФЮЫХУЯЪ Б РЕЦЮУ.

PREG_SET_ORDER

еЯКХ ЩРНР ТКЮЦ СЯРЮМНБКЕМ, ПЕГСКЭРЮР АСДЕР СОНПЪДНВЕМ ЯКЕДСЧЫХЛ НАПЮГНЛ: ЩКЕЛЕМР $matches[0] ЯНДЕПФХР ОЕПБШИ МЮАНП БУНФДЕМХИ, ЩКЕЛЕМР $matches[1] ЯНДЕПФХР БРНПНИ МЮАНП БУНФДЕМХИ, Х РЮЙ ДЮКЕЕ.

<?php
preg_match_all
("|<[^>]+>(.*)</[^>]+>|U",
    
"<b>example: </b><div align=\"left\">this is a test</div>",
    
$out, PREG_SET_ORDER);
echo
$out[0][0] . ", " . $out[0][1] . "\n";
echo
$out[1][0] . ", " . $out[1][1] . "\n";
?>

пЕГСКЭРЮР ПЮАНРШ ОПХЛЕПЮ:

<b>example: </b>, example: 
<div align="left">this is a test</div>, this is a test

б РЮЙНЛ ЯКСВЮЕ ЛЮЯЯХБ $matches[0] ЯНДЕПФХР ОЕПБШИ МЮАНП БУНФДЕМХИ, Ю ХЛЕММН: ЩКЕЛЕМР $matches[0][0] ЯНДЕПФХР ОЕПБНЕ БУНФДЕМХЕ БЯЕЦН ЬЮАКНМЮ, ЩКЕЛЕМР $matches[0][1] ЯНДЕПФХР ОЕПБНЕ БУНФДЕМХЕ ОЕПБНИ ОНДЛЮЯЙХ, Х РЮЙ ДЮКЕЕ. юМЮКНЦХВМН ЛЮЯЯХБ $matches[1] ЯНДЕПФХР БРНПНИ МЮАНП БУНФДЕМХИ, Х РЮЙ ДКЪ ЙЮФДНЦН МЮИДЕММНЦН МЮАНПЮ.

PREG_OFFSET_CAPTURE

б ЯКСВЮЕ, ЕЯКХ ЩРНР ТКЮЦ СЙЮГЮМ, ДКЪ ЙЮФДНИ МЮИДЕММНИ ОНДЯРПНЙХ АСДЕР СЙЮГЮМЮ ЕЕ ОНГХЖХЪ Б ХЯУНДМНИ ЯРПНЙЕ. мЕНАУНДХЛН ОНЛМХРЭ, ВРН ЩРНР ТКЮЦ ЛЕМЪЕР ТНПЛЮР БНГБПЮЫЮЕЛШУ ДЮММШУ: ЙЮФДНЕ БУНФДЕМХЕ БНГБПЮЫЮЕРЯЪ Б БХДЕ ЛЮЯЯХБЮ, Б МСКЕБНЛ ЩКЕЛЕМРЕ ЙНРНПНЦН ЯНДЕПФХРЯЪ МЮИДЕММЮЪ ОНДЯРПНЙЮ, Ю Б ОЕПБНЛ - ЯЛЕЫЕМХЕ. дЮММШИ ТКЮЦ ДНЯРСОЕМ Б PHP 4.3.0 Х БШЬЕ.

б ЯКСВЮЕ, ЕЯКХ МХЙЮЙНИ ТКЮЦ МЕ ХЯОНКЭГСЕРЯЪ, ОН СЛНКВЮМХЧ ХЯОНКЭГСЕРЯЪ PREG_PATTERN_ORDER.

оНХЯЙ НЯСЫЕЯРБКЪЕРЯЪ ЯКЕБЮ МЮОПЮБН, Я МЮВЮКЮ ЯРПНЙХ. дНОНКМХРЕКЭМШИ ОЮПЮЛЕРП offset ЛНФЕР АШРЭ ХЯОНКЭГНБЮМ ДКЪ СЙЮГЮМХЪ ЮКЭРЕПМЮРХБМНИ МЮВЮКЭМНИ ОНГХЖХХ ДКЪ ОНХЯЙЮ. юМЮКНЦХВМНЦН ПЕГСКЭРЮРЮ ЛНФМН ДНЯРХВЭ, ГЮЛЕМХБ subject МЮ substr()($subject, $offset). дНОНКМХРЕКЭМШИ ОЮПЮЛЕРП offset ДНЯРСОЕМ, МЮВХМЮЪ Я PHP 4.3.3.

бНГБПЮЫЮЕР ЙНКХВЕЯРБН МЮИДЕММШУ БУНФДЕМХИ ЬЮАКНМЮ (ЛНФЕР АШРЭ МСКЕЛ) КХАН FALSE, ЕЯКХ БН БПЕЛЪ БШОНКМЕМХЪ БНГМХЙКХ ЙЮЙХЕ-КХАН НЬХАЙХ.

Пример 1. оНКСВЕМХЕ БЯЕУ РЕКЕТНММШУ МНЛЕПНБ ХГ РЕЙЯРЮ.

<?php
preg_match_all
("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
                
"Call 555-1212 or 1-800-555-1212", $phones);
?>

Пример 2. фЮДМШИ ОНХЯЙ ЯНБОЮДЕМХИ Я HTML-РЩЦЮЛХ

<?php
// гЮОХЯЭ \\2 ЪБКЪЕРЯЪ ОПХЛЕПНЛ ХЯОНКЭГНБЮМХЪ ЯЯШКНЙ МЮ ОНДЛЮЯЙХ.
// нМЮ НГМЮВЮЕР МЕНАУНДХЛНЯРЭ ЯННРБЕРЯРБХЪ ОНДЯРПНЙХ ЯРПНЙЕ, ГЮТХЙЯХПНБЮММНИ
// БРНПНИ ОНДЛЮЯЙНИ, Б МЮЬЕЛ ОПХЛЕПЕ ЩРН ([\w]+).
// дНОНКМХРЕКЭМШИ ЯКЕЬ МЕНАУНДХЛ, РЮЙ ЙЮЙ ХЯОНКЭГСЧРЯЪ ДБНИМШЕ ЙЮБШВЙХ.

$html = "<b>bold text</b><a href=howdy.html>click me</a>";

preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);

for (
$i=0; $i< count($matches[0]); $i++) {
  echo
"matched: " . $matches[0][$i] . "\n";
  echo
"part 1: " . $matches[1][$i] . "\n";
  echo
"part 2: " . $matches[3][$i] . "\n";
  echo
"part 3: " . $matches[4][$i] . "\n\n";
}
?>

пЕГСКЭРЮР ПЮАНРШ ОПХЛЕПЮ:

matched: <b>bold text</b>
part 1: <b>
part 2: bold text
part 3: </b>

matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: click me
part 3: </a>

яЛНРПХРЕ РЮЙФЕ preg_match(), preg_replace(), Х preg_split().


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