2014-12-04 2 views
2

Земельный участок: Я создаю сайт, на котором будут индексироваться множество видео, и я хочу, чтобы люди могли искать видео по ключевым словам и предложениям.Перенаправить пользователя на основе поискового запроса, Заблокировать определенные слова

Проблема: Но, как мы все знаем, Интернет переполнен плохих людей и роботов, которые могут выполнять поиск плохих слов или фраз, и я хочу, чтобы взять их на другую страницу, поэтому если запрос соответствует конкретным заблокированные слова, которые они должны перенаправляться на определенный URL-адрес.

<?php include'func.php'; 
if(!empty($_GET['q'])){ 
if ($badword ="no") 
{$url='/search/'.preg_replace("/[^A-Za-z0-9[:space:]]/","-",$_GET['q']).'';} 
else 
{$url='/badsearch/'.preg_replace("/[^A-Za-z0-9[:space:]]/","-",$_GET['q']).'';} 
} 
else{$url='/';} 
header('location:'.$url.''); ?> 

Я хочу код что-то подобное, в котором $badword содержит плохие слова, и я буду любить, если я могу иметь широкое соответствие поэтому поиск для убийства также будет перенаправлен/badsearch /, потому что задница будет плохим словом ,

+0

Наверняка, если вы контролируете видео, присутствующие на сайте, вам нужен соответствующий поиск, чтобы предоставить наиболее точные результаты? Если ключевое слово «задница» приводит к видео, которое, по вашему мнению, непригодно, затем удалите видео, не саботируйте свою поисковую систему. – halfer

ответ

1

Searching и собирая все взял меня к ответу. Этот ответ может помочь другим людям. Это также будет работать, если пользователь вводит DoG или cAt. Это будет поиск слова после каждого места, поэтому, если у вас есть запрос типа «У меня плохая собака», это сработает.

<?php 
$banned_names = array('dog', 'cat', 'mydog'); 
$words = explode(" ",$_GET['q']); 
if(!empty($_GET['q'])){ 
foreach($words as $word) 
{ 
$word = strtolower($word); 
if(in_array($word, $banned_names)) 
{$url='/is/bad/'.preg_replace("/[^A-Za-z0-9[:space:]]/","-",$_GET['q']).'/1';} 
else 
{{$url='/isnot/bad/'.preg_replace("/[^A-Za-z0-9[:space:]]/","-",$_GET['q']).'/1';}} 
} 
} 
else{$url='/';} 
header('location:'.$url.''); 
?> 
0

Прямым решением могло бы понравиться это:

$user_input = $_GET['q']); 
$badword_list= array("badword1", "badword2", "badword3", "badword4", ...); 

if(in_array($user_input, $badword_list)) 
    $url = "something"; 
else 
    $url = "something else"; 

или использовать if (preg_match('/\b(badword1|badword2|badword3|badword4)\b/i',$user_input))

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