Php 使用preg_match检测url?字符串中没有http://

Php 使用preg_match检测url?字符串中没有http://,php,regex,url,preg-match,Php,Regex,Url,Preg Match,我想知道我如何能检查一个数组中的字符串是否与preg_匹配,看看它是否是从www开始的。我已经有了一个可以检查的字符串 谢谢! Stefan尝试内爆($myarray')。strstrstr(“www.”)==0。这会将数组内爆为一个字符串,然后检查www.是否位于字符串的开头(索引0)。是否需要类似以下内容: %^((https?://)|(www\.))([a-z0-9-].?)+(:[0-9]+)?(/.*)?$%i 这是使用|匹配开头的http://或www。我将分隔符更改为%,以避免

我想知道我如何能检查一个数组中的字符串是否与preg_匹配,看看它是否是从www开始的。我已经有了一个可以检查的字符串

谢谢!
Stefan

尝试
内爆($myarray')。strstrstr(“www.”)==0
。这会将数组内爆为一个字符串,然后检查
www.
是否位于字符串的开头(索引0)。

是否需要类似以下内容:

%^((https?://)|(www\.))([a-z0-9-].?)+(:[0-9]+)?(/.*)?$%i

这是使用|匹配开头的
http://
www
。我将分隔符更改为
%
,以避免与
|

冲突。Daven Fireball的John Gruber为可能感兴趣的所有URL类型发布了一个非常全面的正则表达式。你可以在这里找到它:


我首先分解字符串,因为url可能已经过了一半,例如
你好www.google.com

分解字符串并使用
foreach
语句

例如:


注意:您必须使用
=
运算符,因为
strpos
可以返回,将返回一个
0
,该值将显示为
false

,我在下面使用了它,它允许您检测字符串中任意位置的url。对于我的特定应用程序,它是一个用于打击垃圾邮件的联系人表单,因此不允许使用url。效果很好

链接到资源:

我的执行

<?php
// Validate message
if(isset($_POST['message']) && $_POST['message'] == 'Include your order number here if relevant...') {
$messageError = "Required";
} else {
$message = test_input($_POST["message"]);
}
if (strlen($message) > 1000) {
$messageError = "1000 chars max";
}
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
if (preg_match($reg_exUrl, $message)) {
$messageError = "Url's not allowed";
}

// Validate data
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

你能展示一些你已经尝试过的代码吗?这里有更多的人会帮助你解决你正在解决的问题,并给你答案。我只需要得到一个要求并给出一个答案就可以得到报酬。在工作代码中添加到目前为止,我首先将字符串分解,因为url可能已经过了一半。例如:你好,你好,www.google.com这不是真的。。。第二组是
(www\)
,它需要在
www.
之后加一个
。另外,我在这里对“wwwtumblr.com”测试了regexp:但没有通过。但是,这将与www.tumblrcom之类的内容相匹配。最大的错误可能是第三组中未替换的
。这些天我通常做
([a-z0-9-]\)+([a-z0-9-])
来匹配子域和tld。如何仅提取链接?将tld从2个字符限制到3个字符非常糟糕,请参阅:实际代码看起来如何?我有字符串$str=“Blaa lorem ipsum domain-name.studio Blaa Blaa other.com Blaa Blaa Blaa Blaa”;我想获得输出:是的,它包含一个或多个域:domain-name.studio-other.com如果您有时间帮助,谢谢!我试过:$found_url=“”;如果(preg_match(“~^$regex$~i”,$description,$m))$found_url=$m;如果(preg_match(“~^$regex$~i”,$description,$m))$found_url.=$m;但是得到了错误:PHP解析错误:语法错误,意外','
$string = "hello how are you www.google.com";
$string = explode(" ", $string);
foreach ($string as $word){
  if ( (strpos($word, "http://") === 0) || (strpos($word, "www.") === 0) ){
  // Code you want to excute if string is a link
  }
}
<?php
// Validate message
if(isset($_POST['message']) && $_POST['message'] == 'Include your order number here if relevant...') {
$messageError = "Required";
} else {
$message = test_input($_POST["message"]);
}
if (strlen($message) > 1000) {
$messageError = "1000 chars max";
}
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
if (preg_match($reg_exUrl, $message)) {
$messageError = "Url's not allowed";
}

// Validate data
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>