我有这个:
$badWords = array("ban","bad","user","pass","stack","name","html");
$string = 'http://rpmrush.com/uploads/bangalleries/51/original/5e17a20aafe8799843305b7663e6683eda7b3eae.jpg';
$matches = array();
$matchFound = preg_match_all(
"/\b(" . implode($badWords,"|") . ")\b/i",
$string,
$matches
);
if ($matchFound) {
$return['bannedURL'] = true;
echo json_encode($return);
die();
}
当字符串只是被禁止的单词之一时,它可以正常工作。
在我的网站上,我有一个功能,用户可以输入图片网址并添加,但是要阻止用户放置非法等图像(色情等),还要使用我的服务器作为主机,我想要他们的图片创建成人网站等列表,然后检查输入网址。
上面的代码只检查字符串是否完全匹配,如果字符串的一部分匹配,如何更改它以使其工作?
答案 0 :(得分:0)
strpos()
就是你要找的东西。
了解更多here, question #6284553 (Using an array as needles in strpos)。很确定接受的答案是有用的。
答案 1 :(得分:0)
我没有直接看到为什么你的代码不起作用。我想是的。这确实有效:
$badWords = array("ban","bad","user","pass","stack","name","html");
$string = 'http://rpmrush.com/uploads/ban/galleries/51/original/5e17a20aafe8799843305b7663e6683eda7b3eae.jpg';
$matchFound = preg_match(
"/\b(" . implode($badWords,"|") . ")\b/i",
$string,
$matches
);
if ($matchFound) {
echo "YOU ARE BAD! --> " . $matches[0] ;
}
else {
echo "You're good to go!";
}
可能是什么问题是\ b:如果你遗漏了\ b,你也会得到一个与禁令的bangalleries匹配。