Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Replace - очиска от стоп слов (https://javascript.ru/forum/project/34532-replace-ochiska-ot-stop-slov.html)

Sverhchelovek 09.01.2013 02:35

Replace - очиска от стоп слов
 
Есть скрипт, при обращении к которому по адресу, с любым ключевым словом (к примеру вот так: 1.php?q=скачать игру бесплатно)
должен вывести на странице этот ключевой запрос, очистив его от стоп слов(скачать и бесплатно)
Скрипт выводит запрос но не чистит его. как мне правильно написать функцию replace в моем случае. Или в decodeURI проблема? Как правильно сделать?

Вот скрипт:

<script> 
parts=String(document.location).split("?",2)[1].split("&"); 
GET={}; 
for (i=0; i<parts.length;>.split('='); 
GET[curr[0]] = curr[1]; 
} 
var str = decodeURI(GET['q']); 
var result = str.replace("скачать", "бесплатно"); 
document.write(result); 
</script>

Deff 09.01.2013 02:46

Sverhchelovek,
Приведите образцы: Исходной входной строки и
итоговой Выходной, - какой она должна быть после обработки

Sverhchelovek 09.01.2013 03:18

Входная: q=скачать игру бесплатно
Выходная: игру

Deff 09.01.2013 03:28

Цитата:

Сообщение от Sverhchelovek
Выходная: игру

:)
q= - Убираем ?

Deff 09.01.2013 03:42

Цитата:

php?q=скачать игру бесплатно
В URL не может быть пробелов, поди такая строка php?q=скачать_игру_бесплатно или такая php?q=скачать-игру-бесплатно

Sverhchelovek 09.01.2013 11:16

Пробелы заменяются на вот такие символы: %20
т.е. входящий урл вот такой получается: 1.php?q=скачать%20игру%20бесплат но

Deff 09.01.2013 13:51

var StopWord=["скачать", "бесплатно"]; // Массив исключений

function ClearStWrd(a,b){
   a=a.replace(/.*\?q=/i,'').replace(/%20/ig," ");
   var rega;
   for(var i=0; i<b.length; i++){
     reg=new RegExp('\s*'+b[i],'gi');
     a=a.replace(reg,'')
   } return a.replace(/^\s*/i,'');
}

var a='1.php?q=скачать%20игру%20бесплатно';
alert(ClearStWrd(a,StopWord));

var a='2.php?q=кинофильм%20Чапаев%20скачать%20бесплатно';
alert(ClearStWrd(a,StopWord));

Sverhchelovek 09.01.2013 19:21

Наверно не правильно меня поняли, "2.php?q=" - это имя фаила с приставкой q= а далее сам запрос, т.е. скачать%20игру%20бесплатно он и будет входящим.
Что-то так и не получается с вашим примером.

Вот пример работы изначального скрипта: http://nice-vds.biz/111.php?q=%D0%BB...B0%D1%82%D1%8C
Он выводит на страницу но не исключает стоп слова.
Предпологаю что дело в кодировке запроса, т.к. если открыть исходный код, то кодировка запроса не та:
view-source:http://nice-vds.biz/111.php?q=%D0%BB...B0%D1%82%D1%8C

Как быть? Нужно как-то декадировать? Или другой вариант какой?

Deff 09.01.2013 22:03

Цитата:

Сообщение от Sverhchelovek
Предпологаю что дело в кодировке запроса, т.к. если открыть исходный код, то кодировка запроса не та:

Ну наверно у Вас кодировка отдаваемая сервером windows-1251,
Её нужно указывать в meta на странице


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<script type="text/javascript">
var StopWord=["скачать", "бесплатно"]; // Массив исключений

function ClearStWrd(a,b){
   var r=a.replace(/.*\?q=/i,'').replace(/%20/ig," ");
   if(a!= r) a=r; else return '';
   for(var i=0; i<b.length; i++){
     var reg=new RegExp('\s*'+b[i],'gi');
     a=a.replace(reg,'')
   } return a.replace(/^\s*/i,'');
}

var a=decodeURI(document.location)
result = ClearStWrd(a,StopWord);
document.write(result); 
</script>
<title>Скрипт</title>

</head>
<body>

</body>
</html>

Sverhchelovek 11.01.2013 01:00

Спасибо, большое разобрался заработало, после того как преобразовал в utf-8 без boom

Sverhchelovek 30.04.2014 00:36

Подскажите а как сделать редирект, чтобы при обращении к скрипту который выше срабатывал редирект по заданной в ссылке + результат скрипта
Пример запроса к скрипту: q=скачать%20игру%20бесплатно

Редиректил на ссылку: www.заданная_ссылка?игру

Sverhchelovek 06.05.2014 20:04

Решил вот так:
<script type="text/javascript">
var a=decodeURI(document.location)
result = ClearStWrd(a,StopWord);
document.write(result);

document.location.replace("ССЫЛКА" +result);
</script>

Sverhchelovek 22.03.2015 04:55

Скрипт нераспознает запросы в base64
подскажите как сделать чтобы декодировал?
Вот скрипт:
<script type="text/javascript">
var StopWord=["торент", "архив", "Жажда"]; // Исключения
 
function ClearStWrd(a,b){
   var r=a.replace(/.*\?q=/i,'').replace(/%20/ig," ");
   if(a!= r) a=r; else return '';
   for(var i=0; i<b.length; i++){
     var reg=new RegExp('\s*'+b[i],'gi');
     a=a.replace(reg,'')
   } return a.replace(/^\s*/i,'');
}
</script>
<script type="text/javascript">
var a=decodeURI(document.location)
result = ClearStWrd(a,StopWord);
document.location.replace("http://yandex.ru/yandsearch?text="+result");
</script>

Пример нужного запроса к скрипту: q=Need%20for%20Speed%20%C6%E0%E6%E4%E0%20%F1%EA%EE %F0%EE%F1%F2%E8
А если вот так то работает: q=Need%20for%20Speed%20Жажда%20скорост и

Sverhchelovek 22.03.2015 20:11

Ктото может помочь?


Часовой пояс GMT +3, время: 12:03.