2009-11-28 130 views
1

我有一堆字符串,每個都包含一個錨標記和URL。PHP錨標記正則表達式

string ex。

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy! 

我想解析出錨標籤和之間的一切。

result ex。

here is a link. enjoy! 

在href =部的URL並不總是匹配然而鏈接文本(有時被縮短的URL,有時只是描述性文本)。

我有一個非常困難的時間搞清楚如何用正則表達式或PHP函數做到這一點。我如何解析一個字符串中的整個錨點標籤/鏈接?

謝謝!

回答

0

您不應該使用regex to parse html而是使用html解析器。

但是,如果您應該使用正則表達式,並且您的錨點標記內部內容保證不存在像</a>這樣的html,並且每個字符串都保證只包含一個錨點標記,那麼 - 只有這樣 - 您可以使用類似:

$1$2

+0

非常感謝您的鏈接。 – minimalpop 2009-11-29 09:06:07

0

更換/^(.+)<a.+<\/a>(.+)$/由於您的問題似乎是非常具體的,我覺得這個應該這樣做:

$str = preg_replace('#\s?<a.*/a>#', '', $str); 
0

只需用正常的PHP字符串函數。

$str='here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!'; 
$s = explode("</a>",$str); 
foreach($s as $a=>$b){ 
    if(strpos($b ,"href")!==FALSE){ 
     $m=strpos("$b","<a"); 
     echo substr($b,0,$m); 
    } 
} 
print end($s); 

輸出

$ php test.php 
here is a link . enjoy! 
1

看你的結果例子,好像你只是去掉標籤/內容 - 你要保持你剝奪了什麼或沒有?如果沒有,你可能會尋找strip_tags()

0
$string = 'here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!'; 
$text = strip_tags($string); 
echo $text; //Outputs "here is a link . enjoy!"