2014-01-10 8 views
0

у меня есть это:проверить, если URL содержит запрещенный сайт

$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(); 
} 

Который работает хорошо, когда строка просто один из запрещенных слов.

На моем сайте у меня есть возможность для пользователей Введите URL изображения, и они получают, однако, добавили, чтобы остановить пользователь положить незаконные и т.д. изображения (порно и т.п.), а также используя свой сервер в качестве хоста для их dodgey изображений я хотите создать список сайтов для взрослых и т. д., а затем проверить входной URL-адрес на него.

Вышеупомянутый код проверяет, является ли строка точным совпадением, как я могу изменить это, чтобы заставить его работать, если часть строки соответствует?

ответ

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!"; 
} 

Что может быть проблемой является \ Ъ: если оставить поле \ Б вы получаете матч также с bangalleries против запрета.

Смежные вопросы