经过2次尝试(感谢Stack Overflow)我终于得到了我的正则表达式工具,并按照我想要的不同方式将特定事项列入黑名单。但是,它没有正常工作,而是;它会将单词列入黑名单并阻止它们进入数据库,它会引发错误:
PHP警告:preg_match()[function.preg-match]:未知修饰符 '\\'在第324行的C:\ wamp \ www \ anonpost \ index.php中,引用: http://localhost/anonpost/index.php
这是我的代码:
$disallowedWords1 = array(
'offensive','words'
);
foreach ($disallowedWords1 as $word1) {
if (preg_match("/\b$word1\b/i", $entry)) {
die('The word or phrase ' . $word . ' is not allowed...');
}
}
$urlRegex = '(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*';
if (preg_match($urlRegex, $entry)) {
die('The word or phrase ' . $word . ' is not allowed...');
}
我查看了一些在网站上类似的帖子,他们几乎都指出没有分隔符,我有那些,所以我真的很遗憾它可能是什么。任何帮助将不胜感激:)
(对于一个错误的例子,其中有三个[三个不同的preg_match()语句,每个只是略有不同,主要是它找到文本的方式]尝试发布,这不是问题,它只是让它看起来凌乱:http://aviatex14.co.uk/anonpost/)
答案 0 :(得分:1)
转义所有/
或使用其他正则表达式分隔符,即~
或#
if (preg_match("#$urlRegex#", $entry)) {
此外,你的正则表达式可以缩短:
$urlRegex = "(https?|ftp)://([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&;%$-]+)*@)*((?:(25[0-5]|2[0-4]\d|[01]\d{2}|[1-9]\d|[1-9])\.){3}(25[0-5]|2[0-4]\d|[01]\d{2}|[1-9]\d|[1-9]|0)|localhost|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:\d+)*(($|[a-zA-Z0-9.,?'+\\&;%\$#=~_-]+))*";
答案 1 :(得分:-1)
在正则表达式中使用主题标签,即:
preg_match("#/\b$word1\b/i#", $entry)
(您可能必须删除该开头的斜线)