первый елемент массива это совпадения по регулярному выражению
второй элемент то же, но без тегов, так ?
Например:
"#<h1 lang=\"en\" class=\"title\">(.*)</h1>#Usi"
из строки
<h1 lang="en" class="title">
Neurocritical Care
</h1>
выводит:
Array
(
[0] => Array
(
[0] => <h1 lang="en" class="title">
Neurocritical Care
</h1>
)
[1] => Array
(
[0] =>
Neurocritical Care
)
)
Если так, то что будет в элементах где нет тегов ? Что-то в описании функции про это толком ничего нет.
Спустя 18 минут, 42 секунды (4.01.2012 - 15:30) Winston написал(а):
В элементе с индексом 0, находится вся строка которая совпадает с регуляркой.
В элементах от 1 и до n находятся совпадения в подмасках, то есть в ( )
То есть ты написал вот так
В элементах от 1 и до n находятся совпадения в подмасках, то есть в ( )
То есть ты написал вот так
Цитата (kpripper @ 4.01.2012 - 14:11) |
(.*) |
Значит совпадения будут находится в элементе с индексом 1. Если ты добавишь еще одну пару скобок ( ), значит то, что попадется в них, будет находится в элементе с индексом 2, и т.д.
Спустя 5 минут, 39 секунд (4.01.2012 - 15:36) Лена написал(а):
Другой пример, подтверждающий слова Winston
В первом элементе $out1 - все выражение, во втором - буквы(первые группирующие скобки), в третьем(вторые группирующие скобки) - цифры.
$pattern1 = "#<h1 lang=\"en\" class=\"title\">([a-z\s]+)([1-9\s]+)</h1>#Usi";
$str1 = '<h1 lang="en" class="title">
Neurocritical Care 123456
</h1>';
preg_match_all($pattern1,$str1,$out1);
print "<pre>";
print_r($out1);
В первом элементе $out1 - все выражение, во втором - буквы(первые группирующие скобки), в третьем(вторые группирующие скобки) - цифры.
Спустя 1 час, 3 минуты, 2 секунды (4.01.2012 - 16:39) kpripper написал(а):
А понятно, спасибо. Я все думал, что это за подмаски там такие.