Preg_match - получение href - PullRequest
       10

Preg_match - получение href

0 голосов
/ 10 февраля 2010

Я застрял с вопросом, по которому мне только что помогли - это новая проблема, но только немного.

У меня есть этот preg_match, чтобы получить содержимое href. Пожалуйста, не говорите мне не использовать регулярные выражения - я знаю, что я использую другие парсеры / классы и т. Д., Но это старый скрипт, который сейчас нужно исправить :) Нет времени на переписывание!

preg_match("~<a target=\'_blank\' rel=\'nofollow\' href=\"(.*?)\">~i", $epilink, $epiurl);

Возвращает:

http://www.example.com/frame2.php?view=&epi=54673-r

Однако, он должен вернуть:

http://www.example.com/frame2.php?view=168204&epi=54673

Это пример html, с которым он будет работать:

<a target='_blank' rel='nofollow' href="http://www.example.com/frame2.php?view=545903&epi=54683">

Почему URL, который я возвратил, неверно сформирован?

Спасибо всем за любую помощь.

Ответы [ 2 ]

1 голос
/ 10 февраля 2010
$string="<a target='_blank' rel='nofollow' href=\"http://www.example.com/frame2.php?view=545903&epi=54683\">";
$s = explode('">',$string);
foreach($s as $k){
   if (strpos($k,"href")!==FALSE){
        echo preg_replace('/.*href="|/ms',"",$k);
        break;
   }
}

выход

$ php test.php
http://www.example.com/frame2.php?view=545903&epi=54683
0 голосов
/ 10 февраля 2010

Это должно работать:

$epilink = "<a target='_blank' rel='nofollow' href=\"<a href="http://www.example.com/frame2.php?view=545903&epi=54683" rel="nofollow noreferrer">http://www.example.com/frame2.php?view=545903&epi=54683</a>\">"; preg_match("/<a target='_blank' rel='nofollow' href=\"(.*?)\">/i", $epilink, $epiurl);</p> <p>print_r($epiurl);

Вы также можете использовать preg_match_all

...