09.01.2013, 02:35
|
Интересующийся
|
|
Регистрация: 09.01.2013
Сообщений: 12
|
|
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>
|
|
09.01.2013, 02:46
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Sverhchelovek,
Приведите образцы: Исходной входной строки и
итоговой Выходной, - какой она должна быть после обработки
Последний раз редактировалось Deff, 09.01.2013 в 02:54.
|
|
09.01.2013, 03:18
|
Интересующийся
|
|
Регистрация: 09.01.2013
Сообщений: 12
|
|
Входная: q=скачать игру бесплатно
Выходная: игру
|
|
09.01.2013, 03:28
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от Sverhchelovek
|
Выходная: игру
|
q= - Убираем ?
Последний раз редактировалось Deff, 09.01.2013 в 03:39.
|
|
09.01.2013, 03:42
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Цитата:
|
php?q=скачать игру бесплатно
|
В URL не может быть пробелов, поди такая строка php?q=скачать_игру_бесплатно или такая php?q=скачать-игру-бесплатно
|
|
09.01.2013, 11:16
|
Интересующийся
|
|
Регистрация: 09.01.2013
Сообщений: 12
|
|
Пробелы заменяются на вот такие символы: %20
т.е. входящий урл вот такой получается: 1.php?q=скачать%20игру%20бесплат но
|
|
09.01.2013, 13:51
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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));
Последний раз редактировалось Deff, 09.01.2013 в 15:36.
|
|
09.01.2013, 19:21
|
Интересующийся
|
|
Регистрация: 09.01.2013
Сообщений: 12
|
|
Наверно не правильно меня поняли, "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
Как быть? Нужно как-то декадировать? Или другой вариант какой?
|
|
09.01.2013, 22:03
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от 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>
Последний раз редактировалось Deff, 10.01.2013 в 11:08.
|
|
11.01.2013, 01:00
|
Интересующийся
|
|
Регистрация: 09.01.2013
Сообщений: 12
|
|
Спасибо, большое разобрался заработало, после того как преобразовал в utf-8 без boom
|
|
|
|