|
|
|
| Пытаюсь получить значения атрибутов href и title тега <a ..
Пример, даны ссылки одной строкой: <a href="2">телевидение</a> <a title="Привет3" href="3">интернет</a> <a href="4" title="Привет4">о компании</a> <a href="5" title="Привет5">главная</a> <a href="6" title="Привет6">вакансии</a>
preg_match_all("!<a[^>]+href=\"?'?([^ \"'><]+)\"?'?[^>]*(?:title=\"?'?([^ \"'><]+)\"?'?|(?:[^>]*))[^>]*>([^<>]*?)</a>!is",$fastlink,$arrfastlink);
|
получается
(
[0] => Array
(
[0] => <a href="2">телевидение</a>
[1] => <a title="Привет3" href="3">интернет</a>
[2] => <a href="4" title="Привет4">о компании</a>
[3] => <a href="5" title="Привет5">главная</a>
[4] => <a href="6" title="Привет6">вакансии</a>
)
[1] => Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
)
[2] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
)
[3] => Array
(
[0] => телевидение
[1] => интернет
[2] => о компании
[3] => главная
[4] => вакансии
)
)
|
Не могу получить title | |
|
|
|
|
|
|
|
для: Volodja
(12.09.2009 в 14:34)
| | Это что-то такое , если я правильно понял
<?
$fastlink=<<<TXT
<a href="hr2">телевидение</a>
<a title="Привет3" href="hr3">интернет</a>
<a href="hr4" title="Привет4">о компании</a>
<a href="hr5" class=c1 title="Привет5">главная</a>
<a href="hr6" title="Привет6">вакансии</a>
TXT
;
$grain = '["\']?([^\s"\'>]+)["\']?';
$re = '!<a\s[^>]*href='
. $grain .'(?:[^>]*title='
. $grain .')?[^>]*>([^<]*)</a>!i';
preg_match_all($re,$fastlink,$arrfastlink);
print_r($arrfastlink);
?>
|
но чтобы извлечь title там где оно впереди href
нужно хотябы что-то такое
$re = '["\']?([^\s"\'>]+)["\']?';
$re = '!<a\b(?=[^>]*href='
. $re .')(?:[^>]*title='
. $re .')?[^>]*>([^<]*)</a>!i';
|
хотя тоже '["\']?([^\s"\'>]+)["\']?' не сработает во всех возможных вариантах содержимого например
title , там могут быть и пробелы, и кавычки (эскапированные если они как ограничивающие)
, и > тоже может быть | |
|
|
|