[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: работа с GET запросом
Lolik
Привет народ я тут новичок в пхп так себе хотя программирую на других компилируемых языках в сети разбираюсь а в пхп иногда возьникают не понятки решил занятся так вот делаю свой скрипт который будет уникализировать текст (секрет не скажу) вот на каком моменте застрял

вообщем нужно послать на страницу запрос а она должна вернуть код вот что мне надо
http://translate.google.ru/#ru|en|Привет
открываю эту страницу и вижу перевод на английский но теперь делаю так

$code_site=file_get_contents ("http://translate.google.ru/#ru|en|Привет");
echo $code_site;

получаю и вывожу код а перевода нету

вопрос почему? и как можно получить код от гет запроса? только не используя curl,сокета знаете ли другой выход? нужен такой что бы срабатывал везде не требуя дополнительных подключений скрипт размещать буду в блоге своем так что нужны стандартные средства откликнувшим спасибо большое заранее за помощь



Спустя 34 минуты, 42 секунды (17.06.2010 - 22:48) tomash написал(а):

Спустя 10 минут, 47 секунд (17.06.2010 - 22:59) Nikitian написал(а):
Цитата (Lolik @ 17.06.2010 - 19:14)
вопрос почему?
и как можно получить код от гет запроса?

Потому что всё, что за якорем get-параметрами не является и на сервер не посылается. Данные в якоре парсятся js-ом и им же отправляются на бэкенд для перевода. Откройте это же адрес в браузере без JS и никакого перевода не увидите.

Спустя 3 минуты, 50 секунд (17.06.2010 - 23:03) gzim9x написал(а):
Все верно.
На странице изначально перевода нет -- он выводится через JavaScript после AJAX-запроса.

Для получения перевода нужны другие URL:


для "Привет" в urlencode виде:

http://translate.google.ru/translate_a/t?client=t&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82&hl=ru&sl=ru&tl=en&pc=0

Да... еще есть нюанс измени user_agent перед своим запросом, например так:

ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');


wink.gif




Спустя 11 часов, 17 минут, 6 секунд (18.06.2010 - 10:20) Lolik написал(а):
gzim9x
а зачем вообщем ini_set использовать ты посоветовал?

Спустя 9 минут, 20 секунд (18.06.2010 - 10:29) Lolik написал(а):
<?php

$text="%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=$text");
echo $code_site;

?>


посылаю вот так из локальной машины и получаю плохой код
вот что мне ворачивается

{"sentences":[{"trans":"т у тЕт т у,","orig":"т у тЈт т у ","translit":""}],"src":"ru"} ohmy.gif

Спустя 3 минуты, 17 секунд (18.06.2010 - 10:33) Lolik написал(а):
вопрос почему так? и кто может посоветовать литру? про перехваты подобные ph34r.gif

Спустя 9 минут, 16 секунд (18.06.2010 - 10:42) maxims написал(а):
Цитата
посылаю вот так из локальной машины и получаю плохой код

я думал что file_get_contents с локального сервера не работает.... unsure.gif

Спустя 11 минут, 9 секунд (18.06.2010 - 10:53) Nikitian написал(а):
Цитата (Lolik @ 18.06.2010 - 07:29)
<?php

$text="%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=$text");
echo $code_site;

?>


посылаю вот так из локальной машины и получаю плохой код
вот что мне ворачивается

{"sentences":[{"trans":"т у тЕт т у,","orig":"т у тЈт т у ","translit":""}],"src":"ru"} ohmy.gif

Получаете отличный json. Чем он вам не нравится? А смотрите разумеется в cp1251? Json-ответы всегда в utf-8.

Ну и про urlencode() не забывайте.

Спустя 4 минуты, 19 секунд (18.06.2010 - 10:58) Lolik написал(а):
Цитата (maxims @ 18.06.2010 - 07:42)
Цитата
посылаю вот так из локальной машины и получаю плохой код

я думал что file_get_contents с локального сервера не работает.... unsure.gif

Да ты что как это не работает:o ..... laugh.gif

Спустя 2 минуты, 1 секунда (18.06.2010 - 11:00) Lolik написал(а):
Цитата (Nikitian @ 18.06.2010 - 07:53)
Цитата (Lolik @ 18.06.2010 - 07:29)
<?php

$text="%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=$text");
echo $code_site;

?>


посылаю вот так из локальной машины и получаю плохой код
вот что мне ворачивается

{"sentences":[{"trans":"т у тЕт т у,","orig":"т у тЈт т у ","translit":""}],"src":"ru"} ohmy.gif

Получаете отличный json. Чем он вам не нравится? А смотрите разумеется в cp1251? Json-ответы всегда в utf-8.

Ну и про urlencode() не забывайте.

ну с опытом в программировании я то уж понял что дело в кодировке wink.gif
а вот с 0-ым опытом почти в пхп не могли бы подсказать как получить нормальный код страницы если не трудно rolleyes.gif

Спустя 4 минуты, 17 секунд (18.06.2010 - 11:04) Nikitian написал(а):

<?php

$text="переводимый текст в кодировке cp1251";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=".urlencode(iconv('cp1251','utf-8',$text)));
$code=json_decode($code_site,true);
echo iconv('utf-8','cp1251',$code['sentences']['trans']);

?>

Спустя 16 минут, 1 секунда (18.06.2010 - 11:20) Lolik написал(а):
Цитата (Nikitian @ 18.06.2010 - 08:04)

<?php

$text="переводимый текст в кодировке cp1251";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=".urlencode(iconv('cp1251','utf-8',$text)));
$code=json_decode($code_site,true);
echo iconv('utf-8','cp1251',$code['sentences']['trans']);

?>

спасибо конечно за то что не поленился написать код но ты его запускал? призапуске скрипт ничего не выводит ohmy.gif

я в не понятках sad.gif

Спустя 12 минут, 13 секунд (18.06.2010 - 11:32) tomash написал(а):
Выведи весь массив $code и посмотри как в нем данные лежат

print_r($code);

Спустя 7 минут, 16 секунд (18.06.2010 - 11:39) Lolik написал(а):
Цитата (tomash @ 18.06.2010 - 08:32)
Выведи весь массив $code и посмотри как в нем данные лежат

print_r($code);

<?php

$text="переводимый текст в кодировке cp1251";
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&hl=ru&sl=ru&tl=en&pc=0&text=".urlencode(iconv('cp1251','utf-8',$text)));
$code=json_decode($code_site,true);
print_r($code);
echo iconv('utf-8','cp1251',$code['sentences']['trans']);

?>

не получается так же ничего не выводиться sad.gif


=)

Спустя 10 минут, 32 секунды (18.06.2010 - 11:50) tomash написал(а):
error_reporting(E_ALL); в начале кода

Спустя 57 минут, 2 секунды (18.06.2010 - 12:47) Nikitian написал(а):
Вижу в чём проблема: гугль кириллицу передаёт не в кодовом виде, а символьно. Т.е. надо примерно такими символами кириллицу отображать: \u0438
Не помню где конвертер брал, но где-то находил. Будет время - поищу.

Спустя 11 минут, 4 секунды (18.06.2010 - 12:58) gzim9x написал(а):
Цитата
а зачем вообщем ini_set использовать ты посоветовал?


обычная практика -- "замаскироваться" под браузер -- не все сервера согласны PHP-скриптам отдавать данные на постоянной и безвозмездной основе smile.gif

Спустя 1 час, 40 минут, 52 секунды (18.06.2010 - 14:39) tomash написал(а):
Рабочий скрипт) Только там маленькая неточность

Спустя 7 минут, 56 секунд (18.06.2010 - 14:47) Lolik написал(а):
Цитата (tomash @ 18.06.2010 - 11:39)
Рабочий скрипт) Только там маленькая неточность

так в чем не точность? можете показать рабочий что бы возвращал перевод после гет запроса а то из браузера этот запрос пашет а из пхп запрос не работает

кто может рабочий показать?

вот запрос работающий из браузера


http://translate.google.ru/translate_a/t?c...l=ru&tl=en&pc=0


или так тоже работает http://translate.google.ru/translate_a/t?c...l=ru&tl=en&pc=0


а вот как на пхп сделать такое? кто может показать работающий пример?

Спустя 15 минут, 10 секунд (18.06.2010 - 15:02) tomash написал(а):
Lolik
Ну Вам же подсказали про ini_set()

Спустя 7 минут, 38 секунд (18.06.2010 - 15:10) Lolik написал(а):
Цитата (tomash @ 18.06.2010 - 12:02)
Lolik
Ну Вам же подсказали про ini_set()

Сделал вот как и заработало частично huh.gif

<?php

ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82&hl=ru&sl=ru&tl=en&pc=0");
echo $code_site;

?>


вот что вернула страница:

{"sentences":[{"trans":"Hi","orig":"Привет","translit":""}],"dict":[{"pos":"существительное","terms":["Regards","Regard","Remembrances","Compliment","Remembrance"]},{"pos":"междометие","terms":["Hello","Hail","Bye","Hallo","Hullo","Cheer","Cheerio","Ciao","Chin-chin","Howdy"]}],"src":"ru"}


перевод есть но нужно использовать видимо другую кодировку, какую именно и где вписать ее незнаю подскажите пожалуйста

Спустя 5 минут, 34 секунды (18.06.2010 - 15:15) qpayct написал(а):
а чем тебе google API не подошел?

Спустя 1 минута, 33 секунды (18.06.2010 - 15:17) Nikitian написал(а):
Действительно проблема в юзер-агенте.

Спустя 1 минута, 53 секунды (18.06.2010 - 15:19) Lolik написал(а):
Цитата (qpayct @ 18.06.2010 - 12:15)
а чем тебе google API не подошел?

у гугла есть? есть описание и прочее? ссылку дай


НО!!! ПРОБЛЕМА С ТЕМ СКРИПТОМ ТАК И НЕ РЕШЕНА КАК ЖЕ ОТПРАВИТЬ С ВЕРНОЙ КОДИРОВКОЙ???

Спустя 9 минут, 17 секунд (18.06.2010 - 15:28) Lolik написал(а):
Цитата (Nikitian @ 18.06.2010 - 12:17)
Действительно проблема в юзер-агенте.

Можно спросить к чему вы прикрепили это?

во первых он возвращает слово Text

во вторых $text="Текст"; зачем это писать?

и зачем это писать?
$uri="http://translate.google.com/translate_a/t?client=t&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82&hl=ru&sl=ru&tl=en&pc=0";


скрипт ваще не тот вот рабочий скрипт почти(((((((((
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&text=hi&hl=ru&sl=en&tl=ru&pc=0");
echo $code_site;


здесь я с английского слова hi перевожу и мне приходит перевод вот такой

"привет"


как задать в это скрипте кодировку?
<?php

ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&text=hi&hl=ru&sl=en&tl=ru&pc=0");
echo $code_site;

?>

ohmy.gif ohmy.gif ohmy.gif ohmy.gif
ну кто нибудь реально помогите dry.gif


HELP! HELP! HELP! HELP! HELP! HELP! HELP! HELP! HELP!

Спустя 2 минуты, 31 секунда (18.06.2010 - 15:30) tomash написал(а):
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$code_site=file_get_contents ("http://translate.google.ru/translate_a/t?client=t&text=hi&hl=ru&sl=en&tl=ru&pc=0");
$code = json_decode($code_site);
echo iconv('utf-8','cp1251',$code['sentences'][0]['trans']);

Спустя 2 минуты, 22 секунды (18.06.2010 - 15:33) Nikitian написал(а):
Цитата (Lolik @ 18.06.2010 - 12:28)

Можно спросить к чему вы прикрепили это?

во первых он возвращает слово Text

во вторых $text="Текст";  зачем это писать?

потому и прикрепил, чтобы не объяснять, что у меня работает, т.к. скрипт в utf-8 написан и если у вас не срабоает, то надо iconv'ы добавлять. Откройте в редакторе с поддержкой utf-8 кодировки.
Цитата (Lolik @ 18.06.2010 - 12:28)

и зачем это писать?
$uri="http://translate.google.com/translate_a/t?client=t&text=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82&hl=ru&sl=ru&tl=en&pc=0";

Это лишнее - забыл убрать, от тестов осталось


В общем, пишете в $text нужный текст и скрипт вам пишет перевод.

Спустя 5 минут (18.06.2010 - 15:38) Lolik написал(а):
Цитата (Nikitian @ 18.06.2010 - 12:33)
Цитата (Lolik @ 18.06.2010 - 12:28)

В общем, пишете в $text нужный текст и скрипт вам пишет перевод.



Да вы гений, работает только я немножко в шоке почему браузер выдает перевод сразу а не вот так как у меня раньше был


{"sentences":[{"trans":"Hi","orig":"Привет","translit":""}],"dict":[{"pos":"существительное","terms":["Regards","Regard","Remembrances","Compliment","Remembrance"]},{"pos":"междометие","terms":["Hello","Hail","Bye","Hallo","Hullo","Cheer","Cheerio","Ciao","Chin-chin","Howdy"]}],"src":"ru"}



что вы добавили что бы только ответ приходил?

Спустя 1 минута, 53 секунды (18.06.2010 - 15:40) Nikitian написал(а):
Цитата (Lolik @ 18.06.2010 - 12:38)


что вы добавили что бы только ответ приходил?

В конце скрипта:
echo$code['sentences'][0]['trans'];

Спустя 5 минут, 22 секунды (18.06.2010 - 15:45) qpayct написал(а):
вообще google.language.translate() язык оригинала сам определяет автоматически

Спустя 17 секунд (18.06.2010 - 15:45) Lolik написал(а):
ЭТОТ код работает переводит с русского на английский.......

ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$text="Привет";

$code_site=file_get_contents ("http://translate.google.com/translate_a/t?client=t&text=".urlencode($text)."&hl=ru&sl=ru&tl=en&pc=0");

$code=json_decode($code_site,true);
echo$code['sentences'][0]['trans'];



я изменил параметры в ссылке &sl=ru&tl=en на &sl=en&tl=ru
перевод пришел но опять не в той кодировке хотя код не менял а только параметры ссылки почему так? и что нужно сделать в этом коде?


ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$text="Привет";

$code_site=file_get_contents ("http://translate.google.com/translate_a/t?client=t&text=".urlencode($text)."&hl=ru&sl=en&tl=ru&pc=0");

$code=json_decode($code_site,true);
echo$code['sentences'][0]['trans'];



ohmy.gif


Спустя 1 час, 10 минут, 52 секунды (18.06.2010 - 16:56) Lolik написал(а):
блин никто незнает

Спустя 1 час, 11 минут, 44 секунды (18.06.2010 - 18:08) gzim9x написал(а):
Цитата
блин никто незнает


проверил ваш код -- работает.
ответ приходит в кодировке uft-8.

Вы точно выводите страницу в utf-8 а не, к примеру, в cp1251....?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.