Preg_match - alınırken href

2 Cevap php

Onun yeni bir sorun ama sadece biraz - Ben sadece üzerinde yardımcı olmuştur bir soru ile sıkışmış var.

Ben href içeriğini almak için bu preg_match var. Regex kullanmak için değil bana söyleme Lütfen - Ben diğer ayrıştırıcılarda / sınıfları vb kullanarak farkında değilim ama bu sadece şimdi için düzeltilmesi gereken eski bir betik. Yeniden yazma için :) zaman yok!

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

Bu döndürür:

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

Ancak, dönmelidir:

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

Bu birlikte çalışacak html bir örnektir:

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

Neden hatalı biçimlendirilmiş URL döndü edilir?

Herhangi bir yardım için teşekkür ederiz.

2 Cevap

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

çıktı

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

siz de kullanabilirsiniz preg_match_all