2010-03-16 107 views
1

我有相當長的條目提交給數據庫。鏈接檢查字符串

如何創建一個函數來查看此條目是否有鏈接?有人能讓我開始嗎?

非常多,我希望函數能找到任何<a<a href或字符串內的任何其他相關鏈接實例。我不希望將條目扔到數組中。有沒有其他方法可以實現這一點?

+1

因此,您的鏈接意味着'a'元素? – Gumbo 2010-03-16 16:58:25

+0

是的,這是正確的。 – Mike 2010-03-16 16:59:50

+0

啊,好的。你的標記剛剛被系統吃掉了。 – Gumbo 2010-03-16 17:14:42

回答

0

退房Regex找到HTML標籤

+2

不能抱! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2010-03-16 17:10:59

+1

好的,很酷。這是一個有趣的閱讀。我同意正則表達式不適合每一種情況,但是海報要求找到任何「 Joel 2010-03-16 18:21:44

0

如果你想遠離正則表達式的時候,你可以使用strpos和SUBSTR的醜陋組合找到"<a "提取物等

醜陋的東西像這(這隻發現第一個鏈接,它會失敗,代碼不好,並且它找不到'(這是無效的XHTML))ps這是一個壞主意:

function findLink($string) { 
    $pos = strpos($string, "<a "); 
    if ($pos === false) 
    return false; 

    $string = substr($string, $pos); 
    $pos = strpos($string, "href"); 
    $string = substr($string, $pos); 

    // First quote 
    $pos = strpos($string, '"'); 
    $string = substr($string, $pos + 1); 

    // Last quote 
    $pos = strpos($string, '"'); 
    $string = substr($string, 0, $pos); 

    if (trim($string) != "") 
    return $string; 
    return false; 
} 

我敢肯定,你也可以嘗試標記字符串?

$token = strtok($string, "\"'"); 
while ($token !== false) { 
    // Look for anything with a link in it 
    str_replace(array("http://", "www", "ftp://"), "", ltrim($string), $count); 
    if ($count > 0) 
    return $string; 
    $token = strtok($string, "\"'"); 
} 
return false; 

注意:這些都不是很好的方法來做到這一點。