如果它有一个网址,是否可以提醒并阻止提交简单表单?或者,更具体一点。我需要它来阻止任何这些输入类型:
https //domain.com /...
或
www domain.com //
或
domain.com
表格必须接受除网址之外的任何其他内容。
答案 0 :(得分:0)
if (preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$your_field_name_here)){
//put block message or redirect here
}
您可以尝试使用正则表达式来检查网址的存在并执行阻止/重定向操作。
答案 1 :(得分:0)
我不会阻止domain.com
,因为它会将ASP.NET
之类的文字视为错误的网址。无论如何,有几种方法可以做到这一点。
您可以使用strpos
:
function hasUrlLink($text) {
$check = strpos($text, 'http:') !== false || strpos($text, 'https:') !== false || strpos($text, 'www.') !== false;
if($check) {
return true; // Link exists
} else {
return false; // Link does not exist
}
}
$text = $_POST['text'];
if(hasUrlLink($text) === true) {
echo 'Your text has a link in it.';
}
您也可以使用strstr
(如果需要,也可以将其转换为函数):
$text = $_POST['text'];
if(strstr($text, 'http:') || strstr($text, 'https:') || strstr($text, 'www.')) {
echo 'String contains a URL';
}
或者您也可以使用preg_match
(正则表达式)。代码信用转到Seazoux。我刚刚清理了一下代码。:
function checkTextIfUrlExists($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)) {
return true;
} else {
return false;
}
}
$text = $_POST['text'];
if(checkTextIfUrlExists($text)) {
echo 'URL exists!';
} else {
echo 'URL does not exist.';
}