[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помощь с регуляркой
innovate
Решил сегодня окунуться в мир рег. выражений.
$str = "<a href=\"http://example/1\" class=\"1\">text 1</a>";
preg_match("#<a href=\"(.*)\" class=\"1\">(.*)</a>#is", $str, $res);
var_dump($res);

//результат:
array(3) {
[0]=>
string(47) "<a href="http://example/1" class="1">text 1</a>"
[1]=>
string(16) "http://example/1"
[2]=>
string(6) "text 1"
}

//Все казалось бы хорошо - вижу ссылку и текст ссылки, но стоит чуть поправить строку(добавить <a></a>):
$str = "<a href=\"http://example/1\" class=\"1\">text 1</a><a></a>";
//как во 2-ой подмаске(если это так называется) появляется трабла:

[2]=>
string(13) "text 1</a><a>"

Я не могу понять - почему? Я предположил, что моё рег. выражение не воспринимается как единое целое, хотя, если из строки убрать class="1", то ф-я вернет пустой массив, что соответствует докам.
Тогда вновь возникает вопрос, почему <a></a> попадает в результат?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.