|
|
|
| <a href=адрес>текст</a>
как из нескольких таких ссылок сделать массив (лучше двумерный - $out[1][0] - адрес, $out[1][1] - текст. Это не обязательно), состоящий из "адрес" и "текст"?
<?
pattern = "|<a href=\"([^\"]+)\"[^>]+>(.*)</a>|isU";
preg_match_all($pattern, strip_tags($content,'<a>'), $out);
echo "<pre>";
print_r($out);
echo "</pre>";
|
выводит почему-то не все ссылки,
<?
$pattern = "|<a[^>]+>(.*)</a>|isU";
|
так выводятся все ссылки | |
|
|
|
|
|
|
|
для: P@Sol
(11.05.2006 в 17:13)
| | вот несколько причин.
1. href может быть не первым атрибутом. К примеру, перед href может стоять target.
2. перед href может стоять не пробел, а допустим, разрыв строки.
3. значение href может быть обрамлено не в кавычки,а в апострофы. Или не обрамлено вовсе. | |
|
|
|
|
|
|
|
для: Trianon
(11.05.2006 в 17:44)
| |
<a href="station.php?nnst=79310">слова</a>
|
| |
|
|
|
|
|
|
|
для: P@Sol
(15.05.2006 в 09:44)
| |
$pattern = "|<a href=\"([^\"]+)\"[^>]+>(.*)</a>|isU";
|
"+" в регулярных выражениях означает "хотя бы один раз" - то есть в адресе после
href="station.php?nnst=79310"
по приведенному выр-ю должны стаять еще какие-нибудь символы, кроме ">", коих в приведенном адресе нет.
в данном случае нужно испольховать "*" - ноль или более раз, то есть вот так:
$pattern1 = "|<a href=\"([^\"]+)\"[^>]*>(.*)</a>|isU";
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(15.05.2006 в 10:12)
| | спс | |
|
|
|