Строка Google
например google.com.ua/search?hl=ru&q=Дизайн Рё планироР%B
Кто знает как раскодировать строки запросов Google
например google.com.ua/search?hl=ru&q=Дизайн Рё планироР%B
Что значит раскодировать?
Что значит раскодировать?
Раскодировать значит перевести вот эту абракадабру в нормальный русский текст, при вводе руских букв в гугл, он передает в URL по другому какому-то принципу. Функция urldecode не работает.
_http://www.google.com.ua/search?hl=ru&ie=windows-1251&q=%F4%EE%F0%F3%EC&meta=cr%3DcountryUA
Точней не правильную строку дал, вот правильная
_http://www.google.com.ua/search?hl=ru&ie=windows-1251&q=%F4%EE%F0%F3%EC&meta=cr%3DcountryUA
Так это utf-8 вроде. Или еще какая фигня....ой тоесть это вообще-то аски коды, вроде....в общем, это не гугл, а браезер. А зачем тебе это раскодировать? Скрипты нормально понимают.
Так это utf-8 вроде. Или еще какая фигня....ой тоесть это вообще-то аски коды, вроде....в общем, это не гугл, а браезер. А зачем тебе это раскодировать? Скрипты нормально понимают.
Ты понимаешь что за зарос я ввел по стоке? А для рейтингов нужная инфа...
Ты понимаешь что за зарос я ввел по стоке? А для рейтингов нужная инфа...
Не я, мне незачем. Скрипт понимает.
Не я, мне незачем. Скрипт понимает.
Допустим ты смотришь статистику сайта, а тебе выдаються строки на подобие этой, и пойми по какому запросу к тебе зашли, а скрипт то понимает :)
Допустим ты смотришь статистику сайта, а тебе выдаються строки на подобие этой, и пойми по какому запросу к тебе зашли, а скрипт то понимает :)
Допустим, ты это про практику или про теорию?
Напиши $_GET['q'] и посмоти что php выдаст. Если ты смотришь логи каким-то логером, то выбрось его -- он плохой.
Допустим, ты это про практику или про теорию?
Напиши $_GET['q'] и посмоти что php выдаст. Если ты смотришь логи каким-то логером, то выбрось его -- он плохой.
При любом заходе с Гугля реферер приобретает вид типа _http://www.google.com.ua/search?hl=ru&inlang=ru&ie=windows-1251&q=%EA%E0%F2%E0%EB%EE%E3+%F1%E0%E9%F2%EE%E2&btnG=%CF%EE%E8%F1%EA&meta=_
по ним если распарсить строку ты понимаешь по какому запросу пришел человек, но Гугловская строка urldecode, не всегда корректно отображаеться, чаще пишет абракадабу по которой не возможно определить запрос...
При любом заходе с Гугля реферер приобретает вид типа _http://www.google.com.ua/search?hl=ru&inlang=ru&ie=windows-1251&q=%EA%E0%F2%E0%EB%EE%E3+%F1%E0%E9%F2%EE%E2&btnG=%CF%EE%E8%F1%EA&meta=_
по ним если распарсить строку ты понимаешь по какому запросу пришел человек, но Гугловская строка urldecode, не всегда корректно отображаеться, чаще пишет абракадабу по которой не возможно определить запрос...
Вот хоть убей не понимаю сущность проблемы....
echo $_GET['q'];
?>
И задай ссылку вида ?q=%EA%E0%F2%E0%EB%EE%E3+%F1%E0%E9%F2%EE%E2
Причем здесь урлдекод?
Вот хоть убей не понимаю сущность проблемы....
echo $_GET['q'];
?>
И задай ссылку вида ?q=%EA%E0%F2%E0%EB%EE%E3+%F1%E0%E9%F2%EE%E2
Причем здесь урлдекод?
Смори у тя есть счетчик, который считает хито-хосты, + он записывает б БД рефереры за (допустим два дня), как ты покажешь пользователю или сам просмотришь по каким ключевым словам попадали на сайт?
И при чем здесь GET? я ж не на домене google сидю...
Смори у тя есть счетчик, который считает хито-хосты, + он записывает б БД рефереры за (допустим два дня), как ты покажешь пользователю или сам просмотришь по каким ключевым словам попадали на сайт?
И при чем здесь GET? я ж не на домене google сидю...
Не на гугл, но parse_url и parse_str помогут.
// может у тебя какие-то спец настройки выставлены? У меня всё отлично работает.
// для справки -- это всеже аски коды.
Не на гугл, но parse_url и parse_str помогут.
// может у тебя какие-то спец настройки выставлены? У меня всё отлично работает.
// для справки -- это всеже аски коды.
Вот яркий пример
http://top.bigmir.net/stat/index.php?id=18315&curPART=16&p=4&d=2&y=0
видишь зяброкадабры? это енкодированные заросы гугля, все остальные яндекс и рамблер
далее
http://top.bigmir.net/stat/index.php?id=18315&curPART=12&p=4&d=0&y=0
посмотри где домен гугля, видишь... вот такой лажи мне незя допустить, а такое делает стандартная urlencode
Вот яркий пример
http://top.bigmir.net/stat/index.php?id=18315&curPART=16&p=4&d=2&y=0
видишь зяброкадабры? это енкодированные заросы гугля, все остальные яндекс и рамблер
далее
http://top.bigmir.net/stat/index.php?id=18315&curPART=12&p=4&d=0&y=0
посмотри где домен гугля, видишь... вот такой лажи мне незя допустить, а такое делает стандартная urlencode
*Почесывая в затылке*
$arrQuery=parse_str($arrUrl['query']);
Потом компинуешь :)
Ну или попробуй rawurldecode.
А может с кодировками что-то не то?
*Почесывая в затылке*
$arrQuery=parse_str($arrUrl['query']);
Потом компинуешь :)
Ну или попробуй rawurldecode.
А может с кодировками что-то не то?
Да нет... кодировки здесь не при чем... Это стандарт работы со строками гугл...
Да нет... кодировки здесь не при чем... Это стандарт работы со строками гугл...
Ладно, сдаюсь. Вспомню пас от мертвого сервака напишу код -- как я это делал.
Ладно, сдаюсь. Вспомню пас от мертвого сервака напишу код -- как я это делал.
Умники! Это самый обычный UTF-8. Переключите кодировку в браузере и увидите, мать-перемать!
Умники! Это самый обычный UTF-8. Переключите кодировку в браузере и увидите, мать-перемать!
А как перевести с UTF-8 в win-1251?
А как перевести с UTF-8 в win-1251?
Попробовать использовать ф-ции перевода из юникода в АнСи
А как перевести с UTF-8 в win-1251?
# твоя строка
$string=q(http://www.google.com.ua/search?hl=ru&inlang=ru&ie=windows-1251&q=%EA%E0%F2%E0%EB%EE%E3+%F1%E0%E9%F2%EE%E2&btnG=%CF%EE%E8%F1%EA&meta=_);
@pairs=split/&/,$string;
for (@pairs) {
tr/+/ /;
($name, $value) = split(/=/);
$name =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/eg;
$value =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/eg;
if ($form{$name}) { $form{$name} .= ",$value"; }
else { $form{$name} = $value; }
}
for(sort keys %form){
print "$_ = $form{$_}\n";
}
--------------------
вывод:
btnG = Поиск
http://www.google.com.ua/search?hl = ru
ie = windows-1251
inlang = ru
meta = _
q = каталог сайтов
Ага, а теперь расскажи им как это сделать на пхп а не перле)
Да, надо поправиться - это дело не имеет отношения не к утф, сипи1251 - это обычное декодирование данных формы.
Соответственно, если в твоем случае в строке присутствует адрес - то его надо предварительно обрезать:
$string=~s/^.*?\?//;
По поводу пхп не скажу, - общий принцип: пары имя/значение разбиты амперсандами (&), имя от значения отделяется знаком равно (=), символы старше 127 кодируются как %HH, где HH хекс код символа.
Вроде так, а вообще в пхп для этого дожны буть готовые ф-ии