вообщем нужно послать на страницу запрос а она должна вернуть код вот что мне надо
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:
На странице изначально перевода нет -- он выводится через 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](http://phpforum.ru/html/emoticons/wink.gif)
Спустя 11 часов, 17 минут, 6 секунд (18.06.2010 - 10:20) Lolik написал(а):
gzim9x
а зачем вообщем ini_set использовать ты посоветовал?
а зачем вообщем 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"}
$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](http://phpforum.ru/html/emoticons/ohmy.gif)
Спустя 3 минуты, 17 секунд (18.06.2010 - 10:33) Lolik написал(а):
вопрос почему так? и кто может посоветовать литру? про перехваты подобные
![ph34r.gif](http://phpforum.ru/html/emoticons/ph34r.gif)
Спустя 9 минут, 16 секунд (18.06.2010 - 10:42) maxims написал(а):
Цитата |
посылаю вот так из локальной машины и получаю плохой код |
я думал что file_get_contents с локального сервера не работает....
![unsure.gif](http://phpforum.ru/html/emoticons/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"} ![]() |
Получаете отличный json. Чем он вам не нравится? А смотрите разумеется в cp1251? Json-ответы всегда в utf-8.
Ну и про urlencode() не забывайте.
Спустя 4 минуты, 19 секунд (18.06.2010 - 10:58) Lolik написал(а):
Цитата (maxims @ 18.06.2010 - 07:42) | ||
я думал что file_get_contents с локального сервера не работает.... ![]() |
Да ты что как это не работает:o .....
![laugh.gif](http://phpforum.ru/html/emoticons/laugh.gif)
Спустя 2 минуты, 1 секунда (18.06.2010 - 11:00) Lolik написал(а):
Цитата (Nikitian @ 18.06.2010 - 07:53) | ||
Получаете отличный json. Чем он вам не нравится? А смотрите разумеется в cp1251? Json-ответы всегда в utf-8. Ну и про urlencode() не забывайте. |
ну с опытом в программировании я то уж понял что дело в кодировке
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
а вот с 0-ым опытом почти в пхп не могли бы подсказать как получить нормальный код страницы если не трудно
![rolleyes.gif](http://phpforum.ru/html/emoticons/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) |
|
спасибо конечно за то что не поленился написать код но ты его запускал? призапуске скрипт ничего не выводит
![ohmy.gif](http://phpforum.ru/html/emoticons/ohmy.gif)
я в не понятках
![sad.gif](http://phpforum.ru/html/emoticons/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](http://phpforum.ru/html/emoticons/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](http://phpforum.ru/html/emoticons/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()
Ну Вам же подсказали про ini_set()
Спустя 7 минут, 38 секунд (18.06.2010 - 15:10) Lolik написал(а):
Цитата (tomash @ 18.06.2010 - 12:02) |
Lolik Ну Вам же подсказали про ini_set() |
Сделал вот как и заработало частично
![huh.gif](http://phpforum.ru/html/emoticons/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](http://phpforum.ru/html/emoticons/ohmy.gif)
![ohmy.gif](http://phpforum.ru/html/emoticons/ohmy.gif)
![ohmy.gif](http://phpforum.ru/html/emoticons/ohmy.gif)
![ohmy.gif](http://phpforum.ru/html/emoticons/ohmy.gif)
ну кто нибудь реально помогите
![dry.gif](http://phpforum.ru/html/emoticons/dry.gif)
Спустя 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) | ||
|
Да вы гений, работает только я немножко в шоке почему браузер выдает перевод сразу а не вот так как у меня раньше был
{"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 написал(а):
ЭТОТ код работает переводит с русского на английский.......
я изменил параметры в ссылке &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=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'];
Спустя 1 час, 10 минут, 52 секунды (18.06.2010 - 16:56) Lolik написал(а):
блин никто незнает
Спустя 1 час, 11 минут, 44 секунды (18.06.2010 - 18:08) gzim9x написал(а):
Цитата |
блин никто незнает |
проверил ваш код -- работает.
ответ приходит в кодировке uft-8.
Вы точно выводите страницу в utf-8 а не, к примеру, в cp1251....?