2010-02-10 42 views
0

我已經卡住了我剛纔已經幫助上一個問題 - 它是一個新的問題,但只是稍稍。的preg_match - 檢索HREF

我有這樣的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"> 

爲什麼我返回的網址格式不正確?

謝謝大家的幫助。

+0

我懷疑問題是你傳遞字符串中它。 – 2010-02-10 00:44:27

+0

變量'$ epilink' - 包含一些html,至少有一個我已經作爲示例粘貼的url。我的正則表達式是否適用於此? – Abs 2010-02-10 00:47:56

+0

它會的。但是,如果文本中較早的字符串中有任何其他字符串匹配,它將會替換這些字符串。 – 2010-02-10 00:51:20

回答

1
$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

該字符串將包含更多的html。正如我對阿農說的,我怎樣才能得到一場比賽?順便說一句,謝謝你回答我以前的問題。 – Abs 2010-02-10 00:55:32

+0

第一場比賽?你可以退出for循環。請參閱編輯 – ghostdog74 2010-02-10 01:26:59