Php 检查文本是否包含URL

Php 检查文本是否包含URL,php,Php,如何检查PHP中的文本在其文本中是否包含链接? 我有一个数据库表格式如下 +------------------+ | id | posts | tag | +------------------+ | 1 | text 1| 0 | //no links | 2 | text 2| 1 | //contains links 基本上,我想验证提交的条目是否包含链接, 标记列的值为1 有人能帮我正确地编码上面的示例吗?目前这是我的PHP: include 'function.php'

如何检查PHP中的文本在其文本中是否包含链接? 我有一个数据库表格式如下

+------------------+
| id | posts | tag |
+------------------+
| 1  | text 1|  0  | //no links
| 2  | text 2|  1  | //contains links
基本上,我想验证提交的条目是否包含链接,
标记
列的值为
1

有人能帮我正确地编码上面的示例吗?目前这是我的PHP:

include 'function.php';

$text= $_POST['text'];

//if $text contains a url then do this function 
postEntryWithUrl($text);

//else here 
postEntry($text);
您可以执行“简单”正则表达式:


我已经完成了“多一点”的代码。。。如你所见:D

您可以使用
stristr()

preg_match()


你可以使用基于正则表达式的搜索,在谷歌上查找URL正则表达式。“有些人在遇到问题时,会想‘我知道,我会使用正则表达式’。现在他们有两个问题。”如果你问一个字符串,问一个字符串,不要先写关于某个数据库的长句。保留对具体问题的问答,这里不是您的支持论坛。再看看这个问题以前在哪里被问过并得到了回答。然后概述一下为什么到目前为止您尝试过的现有答案不适合您。在此之前,我建议关闭这个网站,让它更直截了当。很抱歉,我保证记住这一点。谢谢。如果没有“http://”,只有“www.”或者两者都没有呢?我真的没有注意到我这么做了。抱歉,不用担心。我的只是一个猜测,因为缺少OP中的上下文。虽然他提到
$text包含url
,但我认为它是完全限定的。当然,我的答案不适用于SSL URL。如果我只写“google.com”怎么办?这个答案只包含一个URL方案,如果有https-infront或者没有@rushil所说的内容怎么办。这个答案不应该被检查为答案…哇,这是一个
简单的
正则表达式?jkWell它是有效的,这是“简单”的事情…提示:对如此大的正则表达式模式使用x modifier和PHP herdoc字符串,这样它可以更好地记录并更清晰地阅读。@Ikillnukes:什么时候“它有效”简单了?我认为“它能工作”是肮脏的,但很难工作。这不起作用!
<?

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);
   }

?>
$has_link = stristr($string, 'http://') ?: stristr($string, 'https://');
preg_match('/(http|ftp|mailto)/', $string, $matches);
var_dump($matches);
$text = (string) $_POST['text'];

$bHasLink = strpos($text, 'http') !== false || strpos($text, 'www.') !== false;

if($bHasLink){
    postEntryWithUrl($text);
}else{
    postEntry($text);
}