如何检查PHP中的文本是否包含文本中的链接? 我有一个数据库表格式如下。
+------------------+
| id | posts | tag |
+------------------+
| 1 | text 1| 0 | //no links
| 2 | text 2| 1 | //contains links
基本上,我想验证提交的条目是否包含链接,如果是,
tag
列的值为1
。
有人可以帮我正确编码上面的示例吗?目前这是我的PHP:
include 'function.php';
$text= $_POST['text'];
//if $text contains a url then do this function
postEntryWithUrl($text);
//else here
postEntry($text);
答案 0 :(得分:8)
$text = (string) $_POST['text'];
$bHasLink = strpos($text, 'http') !== false || strpos($text, 'www.') !== false;
if($bHasLink){
postEntryWithUrl($text);
}else{
postEntry($text);
}
答案 1 :(得分:3)
你可以做一个“简单”的正则表达式:
<?
include 'function.php';
$text= $_POST['text'];
$regex = "((https?|ftp)\:\/\/)?"; // SCHEME
$regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass
$regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP
$regex .= "(\:[0-9]{2,5})?"; // Port
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path
$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query
$regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor
if(preg_match("/^$regex$/", $text))
{
postEntryWithUrl($text);
} else {
postEntry($text);
}
?>
我已经完成了“多一点”的代码......正如你所看到的那样。 :d
答案 2 :(得分:1)