伙计我试图阻止10个帖子以下的用户发送垃圾邮件链接帮助我使这段代码正常工作,我需要它来阻止 URL.tld 和 URL.tld / something < /强>
function badwords(&$post)
{
global $mybb, $db;
if($mybb->user['postnum'] > 10)
return;
$badwords = explode('|', 'http|https|www|com|net|org|co.uk');
foreach($badwords as $badword)
{
if(preg_match("/\b$badword\b/i", $post->data['message'], $match))
{
$post->errors['badwords']['error_code'] = "Error message goes here";
}
}
return;
}
答案 0 :(得分:0)
您可以使用此表达式:
^(http|https)?(:)?(/)?(/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(/.)?$
如果你想让那些虚假的东西变为真,你只需要这个位。[a-z] {2,5}可选。
如果你想忽略它,你应该将i
添加到正则表达式的末尾。
$urls = array(
'google.com/test', // true
'http://google', // false
'://google.com', // true
':google.com', // true
':/google.com', // true
'www.google', // false
'www.google.com' // true
);
$regex = '/^(http|https)?(:)?(\/)?(\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/';
foreach($urls as $url){
$t = preg_match($regex, $url, $match);
var_dump($t);
}
$urls = array(
'google.com/test', // true
'http://google', // false
'://google.com', // true
':google.com', // true
':/google.com', // true
'www.google', // false
'www.google.com' // true
);
$regex = '/^(http|https)?(:)?(\/)?(\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/';
foreach($urls as $url){
$t = preg_match($regex, $url, $match);
var_dump($t);
}
此处的实例:example
答案 1 :(得分:0)
您可以使用以下表达式:
^(http|https)?(:)?(/)?(/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(/.)?$
使用此功能,将阻止所有邮件,因为[a-z0-9] +)
将阻止所有字母和数字。
答案 2 :(得分:-1)
匹配链接可以使用以下正则表达式模式完成:
function badwords(&$post)
{
global $mybb, $db;
if($mybb->user['postnum'] > 10)
return;
// build the regex pattern that matches URLs
$regex = "%\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))%s";
if(preg_match($regex, $post->data['message'], $match))
{
$post->errors['badwords']['error_code'] = "Error message goes here";
}
return;
}
然后可以在preg_match函数中使用此正则表达式模式。