Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2010, 17:30
Новичок на форуме
Отправить личное сообщение для infbyte Посмотреть профиль Найти все сообщения от infbyte
 
Регистрация: 12.11.2010
Сообщений: 4

Регулярка в ф-ии
<script type='text/javascript'>
function qwerty(A,B) { 
var reg=A; 
if (reg.exec(document.referrer)) { 
var reg=B; 
var arr=reg.exec(document.referrer); 
var str=arr[1];
str=decodeURIComponent(str);
var str=str.replace(reg=/\+/g, " ") ;

}
return str;
}
document.write(qwerty(/search\.qip\.ru/,/search\?query=(.+?)$/));
</script>



Почему не работает подскажите плиз.
Возможно с синтаксисом что-то намутил.

Без использования ф-ии все пахало
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2010, 18:00
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Какой результат вы пытаетесь получить?
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2010, 18:02
Новичок на форуме
Отправить личное сообщение для infbyte Посмотреть профиль Найти все сообщения от infbyte
 
Регистрация: 12.11.2010
Сообщений: 4

Пользователь заходит на страничку с поисковика.
Скрипт смотрит реферрер и вырезает все что после query=
И выводит результат на экран.
кароче говорю, скрипт смотрит по какому запросу перешли на мой сайт.
Когда делал без функции - все работает.
Обернул код в функцию - перестало работать, вот думаю что проблемма в синтаксисе


Вот так работает:
<script type='text/javascript'>
 
var reg=/search\.qip\.ru/; 
if (reg.exec(document.referrer)) { 
var reg=/search\?query=(.+?)$/; 
var arr=reg.exec(document.referrer); 
var str=arr[1];
str=decodeURIComponent(str);
var str=str.replace(reg=/\+/g, " ") ;
document.write(str);
}
 

</script>

Последний раз редактировалось infbyte, 12.11.2010 в 18:07.
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2010, 18:30
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Зачем все так усложнят-то?
alert(document.referrer.replace(/.*query=(.*)/g, "$1"));

Последний раз редактировалось monolithed, 12.11.2010 в 18:42.
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2010, 19:00
Новичок на форуме
Отправить личное сообщение для infbyte Посмотреть профиль Найти все сообщения от infbyte
 
Регистрация: 12.11.2010
Сообщений: 4

Сообщение от monolithed Посмотреть сообщение
Зачем все так усложнят-то?
alert(document.referrer.replace(/.*query=(.*)/g, "$1"));

Ну для проффи так легче а новичкам по строкам удобней как я


Если добавлю все что мне необходимо :

1)Нужно заменить плюсы на пробелы.
2)отобразить с какого поисковика перешли (var reg=/search\.qip\.ru/; ...так же будет с яндексом апортом гуглом майлом гуглом итд)
3)Привести текст в читаемый вид (decodeURIComponent)

то код опять получится из 5+ строк как в первом посте

Этот код нужно написать для 10 поисковиков.
получается 50 строк,вот я и хотел испоьзовать функцию.


Хотел узнать что не правильно в той функции написано,в плане синтаксиса.
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2010, 19:21
Новичок на форуме
Отправить личное сообщение для infbyte Посмотреть профиль Найти все сообщения от infbyte
 
Регистрация: 12.11.2010
Сообщений: 4

Броузер вот такое возвращает при отладке:

Цитата:
JavaScript - http://test1.ru/

Uncaught exception: TypeError: 'reg.exec' is not a function
Error thrown at line 4, column 0 in qwerty(A, B) in http://test1.ru/:
if (reg.exec(document.referrer))
called from line 13, column 0 in http://test1.ru/:
document.write(qwerty('/search\.qip\.ru/','/search\?query=(.+?)$/'));
JavaScript - http://test1.ru/

Uncaught exception: TypeError: Cannot convert 'arr' to object
Error thrown at line 7, column 0 in qwerty(A, B) in http://test1.ru/:
var str=arr[1];
called from line 13, column 0 in http://test1.ru/:
document.write(qwerty(/search\.qip\.ru/,/search\?query=(.+?)$/));
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2010, 19:45
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Еще раз повторюсь, что нет необходимости в многострочном коде:


var str = decodeURIComponent("http://javascript.ru/php?query=http://ya.ru%2F%D0%BA%D0%B0%D0%BA-%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA");
alert(str.replace(/.*query=(.*)/i, "$1").match(/http\:\/\/\w+\.\w+/i));


в итоге вам нужно:
document.referrer.replace(/.*query=(.*)/i, "$1").match(/http\:\/\/\w+\.\w+/i);

Последний раз редактировалось monolithed, 12.11.2010 в 20:16.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярка получаем год greatilya Серверные языки и технологии 5 23.08.2010 04:37
Регулярка для чисел klin Javascript под браузер 11 29.07.2010 02:03
хитрая регулярка tazododu Серверные языки и технологии 1 08.07.2010 17:23
Регулярка не должна воспринимать текст JavaScript в теге Script alexKniaz Общие вопросы Javascript 5 30.10.2009 21:59
Регулярка работает через раз. Andrej_2 Общие вопросы Javascript 17 17.05.2009 15:15