Функции регулярных выражений (PCRE) - часть 2
Теперь массив Sout будет содержать следующие элементы (общая схема):
Фрагменты | ||||
0 |
1 |
... | ||
Шаблон |
0 |
$out[0]|0] = "<b>Пример: </b>" |
$out[0][l] = "<cliv aligrHeft> мой T6KCT</div>" |
$out[0)[...] |
Под-шаблоны |
1 |
$out[l][0] = "Пример: " |
Sout[l][l] = " мой текст " |
$out[l]L-..] |
$out[...][0] |
$out[...][l] |
$out[...][...] |
PREG_SET_ORDER — в виде [фрагмент] [(под)шаблон]. В (гюд)массивах $matches[0] — $matches[xxx] сохраняются соответствующие фрагменты совпадения.
preg_match_all ("[<[*>]+>(.*)</[">]+>|U". "<b>Пример: </b> <div align-left* мой текст </div>", $out. PREG SET ORDER):
Шаблон
Подшаблоны
0
,
Фрагменты
0
$out[0][0] =•
"<b>Пример:
</b>"
$out[0][l] = "Пример: "
$out(0][...J
1
$out[l][0] -
"<div align=lefl> мой текст </div>"
$put[lj[l]-" мой текст "
$out[l]|...|
...
$out[...][0]
$out [...][!]
$out[...][...]
//Пример 1. Получение телефонного номера. preg_match_all t"/\(? (\d{3.6})? \)?
(?(1) [\-\s] ) \d{3}-\d{4}/x". "Call 555-1212 or 1-800-555-1212", Sphones). // Пример 2. Искать парные HTML теги (жадно) // \\2 - ссылка, здесь на t[\wj+) Shtml = "<b>bold text</b>--a href=howdy.htrol>click me</a> preg_match_dll ("/(<([\w]+)[*>]*>K.*)(<\/\\2>)/". Shtnl. Sratches); for ($i=0. $i< count($inatches[0]). $i++) { echo "фрагмент: " $matches[0][$i] "\n". "часть 1 " $matches[l][$i] "\n". "часть 2: ".$matches[3][$i]."\n". "часть 3: ".$matches[4][$i]."\n\n". }
После запуска примера будет выведено:
фрагмент: <b>bold text</b> часть 1 <b>
часть 2: bold text часть 3: </b> фрагмент: <а href=howdy.html> click me<@060>/a> часть1: <а href=howdy.html> часть 2: click me часть 3 </а>