Вопрос

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

У меня есть 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-адрес, который я вернул, имеет неверный формат?

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

Это было полезно?

Решение

$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

Другие советы

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

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

print_r ($ эпиурл);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top