2010-03-16 85 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; 

注意:这些都不是很好的方法来做到这一点。