Столкнулся с задачей написания скрипта перевода с рус. на англ. и обратно. Решил брать строку перевода и отправлять на сервер переводчика гугла методом ПОСТ. Это все реализовал. И даже с англ на рус переводит и все отлично возвращает. Проблема в том, что при переводе с рус. на англ. гугл возвращает знаки ? Пробовал кодировками играться, только подобрать не могу. И перед отправкой русского текста перекодировал его в UTF-8 и в cp1251 и в KOI8-R. Все одно. Подскажите, что делать!!!!!!
В инструментах приводится код, который встраивается в HTML страницы и там потом кнопка "Перевести" высвечивается, которую нажимаешь, а скрипт тебя перекидывает на translate.google и все. А мне необходимо из скрипта с помощью PHP обращаться, а потом уже результат выводить.
Заголовки устанавливал? для передаваемого текста. И такой момент. Вместо вывода на экран полученный результат сохрани в файл И посмотри, что за кодировка там пришла.
Код (Text): fputs($fp, "POST $path HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Referer: $referer\r\n"); fputs($fp, "Content: text/html; charset=utf-8\r\n"); fputs($fp, "Content-length: ". strlen($data) ."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data); Это заголовки! Код (Text): Я завтра пойду в школу HTTP/1.1 200 OK Date: Tue, 13 Oct 2009 10:42:41 GMT Expires: Tue, 13 Oct 2009 10:42:41 GMT Cache-Control: private, max-age=86400 Content-Type: text/html; charset=KOI8-R Content-Language: ru Set-Cookie: PREF=ID=161fe98d537c4ae8:NW=1:TM=1255430561:LM=1255430561:S=2idaDWfhwbVp5cTk; expires=Thu, 13-Oct-2011 10:42:41 GMT; path=/; domain=.google.ru Server: translation X-XSS-Protection: 0 Transfer-Encoding: chunked Connection: close ? ?????? ????? ? ????? Выше текст, который отправляю, заголовки, которые возвращает сервер и текст который возвращает он же
Бгг. У меня все работает. PHP: <?php $url ='http://translate.google.com.ua/translate_t'; $data = array( 'text' => 'пришел полный конец наших попыток', 'sl' => 'ru', 'tl' => 'en', 'prev' => 'hp', 'js' => 'n' ); $options = array( 'http' => array( 'method' => 'GET', 'header' => "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 4.0.20506) Content-Type: 'text/plain; charset=UTF-8\r\n\r\n" ) ); $context = stream_context_create($options); $url .= '?' . http_build_query($data); $res = file_get_contents($url, null, $context); file_put_contents('res.txt', $res);
Что за функция http_build_query? Имеется ввиду простое преобразование элементов $data в text='bla-bla'&sl=ru и т.д. или же что-то сложнее?
Спасибо. Все заработало без urlencoded. С функцией затупил Я так думаю это из-за метода было. Я использовал POST, а здесь GET.