Pergunta

Eu tenho preso com uma pergunta que eu apenas ter sido ajudado por diante -. É um problema novo, mas apenas ligeiramente

Eu tenho essa preg_match para obter o conteúdo de href. Por favor, não me diga que não usar regex - Estou ciente de usar outros parsers / classes etc, mas este é um script antigo que precisa apenas de ser fixado por agora. :) Não há tempo para re-escreve!

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

Ele retorna:

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

No entanto, ele deve retornar:

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

Este é um exemplo de html que ele iria trabalhar com:

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

Por que o URL eu voltei malformada?

Graças todos por qualquer ajuda.

Foi útil?

Solução

$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;
   }
}

saída

$ php test.php
http://www.example.com/frame2.php?view=545903&epi=54683

Outras dicas

Isso deve funcionar:

$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($epiurl);

Você também pode usar preg_match_all

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top