|
|
|
| Есть страница, из которой нужно вырезать ссылки вида
<a href="http://www.site.ru/site/[\d]/[\d].html">ТЕКСТ</a>
|
пробую так:
$links = preg_split("#<a href=\"http://www.site.ru/site/(\d+)/(\d+)\.html\">.+</a>#i", file_get_contents("1.htm"));
|
мне это выдает всю страницу, разбитую на 2 части, причем совершенно без логики.
В чем ошибка, подскажите? | |
|
|
|
|
|
|
|
для: wUPS
(16.12.2007 в 13:56)
| | >> мне это выдает всю страницу, разбитую на 2 части
preg_split() для этого и применяется... Используйте preg_match_all()
А разбивает на две части, потому что работает в жадном режиме.
Добавте модификатор "U" или добавте "вопрос" между угловых скобок: ....)/(\d+)\.html\">.+?<...... | |
|
|
|
|
|
|
|
для: kasmanaft
(16.12.2007 в 14:10)
| |
preg_match_all("#<a href=\"http://www.site.ru/site/(\d+)/(\d+)\.html\">.+</a>#i", file_get_contents("1.htm"), $links);
|
почему в таком варианте каждый элемент массива $links[0] содержит несколько ссылок?
И в добавок, проверку прошли элементы вида
<a href="/list/9.html">9</a>
|
? | |
|
|
|
|
|
|
|
для: wUPS
(16.12.2007 в 14:23)
| | >>почему в таком варианте каждый элемент массива $links[0] содержит несколько ссылок?
Вот, из-за этого модификатора они и попали...
С модификатором будет выглядеть вот так:
<a href=\"http://www.site.ru/site/(\d+)/(\d+)\.html\">.+</a>#iU
Или с вопросом:
<a href=\"http://www.site.ru/site/(\d+)/(\d+)\.html\">.+?</a>#i
UPD.. упс.. неправильно понял, похоже, "16.12.2007 в 14:30".. Но Unkind уже пояснил. | |
|
|
|
|
|
|
|
для: kasmanaft
(16.12.2007 в 14:10)
| | >>>
>Добавте модификатор "U" или добавте "вопрос" между угловых скобок: ....)/(d+).html">.+?<......
отлично, спасибо. попрошу лишь, если не сложно, объяснить смысл этого ? илиU :) | |
|
|
|
|
|
|
|
для: wUPS
(16.12.2007 в 14:30)
| | U - один из модификаторов: http://php.net/manual/en/reference.pcre.pattern.modifiers.php
Снимает "жадность", т.е. паттерн "/a.*b/" в строке "a_b_b" найдет совпадение "a_b_b", а с модификатором найдет только "a_b".
А если квантификатор (в данном случае "*") сопровождается вопросительным знаком, то это тоже снимает "жадность". | |
|
|
|