Php 使用preg_match检测url?字符串中没有http://
我想知道我如何能检查一个数组中的字符串是否与preg_匹配,看看它是否是从www开始的。我已经有了一个可以检查的字符串 谢谢!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。我将分隔符更改为%,以避免
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;
}
?>