file_get_contents () Google Text to Speech аудио файл не английские / латинские символы - PullRequest
1 голос
/ 29 января 2011

Я искал в существующих темах, но не смог найти решения ... вот мой вопрос.

Я использую текст в речь Google для загрузки mp3-файлов. Функция отлично работает для английских символов .. и языков, использующих английские символы. К сожалению, для русского языка (или любых нелатинских символов) мой скрипт генерирует правильный URL-адрес, но не загружает никакого контента (но он загружает файл размером 0 КБ .. пустой)

file_put_contents($filepath,file_get_contents("http://translate.google.com/translate_tts?tl=".$lang."&q=".rawurlencode($transtext).""));

Вот пример французского слова (телефон) http://translate.google.com/translate_tts?tl=fr&q=t%C3%A9l%C3%A9phone

Когда я захожу на страницу вручную и скачиваю файл, все работает .. но не с file_get_contents.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Вы должны добавить входной параметр кодирования (ie=UTF-8) и соответствующим образом кодировать текст перевода.

Например, следующий фрагмент PHP можно использовать для загрузки аудиофайла для «téléphone» (на французском языке) из службы Google TTS. Обратите внимание, что он не работает должным образом без входного параметра кодирования.

$transtext = "t\xe9l\xe9phone"; // ISO-8859-1 string to be encoded in UTF-8
$base_url = 'http://translate.google.com/translate_tts?';
$qs = http_build_query(array(
    'tl' => 'fr',
    'ie' => 'UTF-8',
    'q' => utf8_encode($transtext)
));
$contents = file_get_contents($base_url . $qs);
0 голосов
/ 29 января 2011

Это очень плохой способ загрузки файла через HTTP, так как вам нужно сохранить весь файл в памяти. Или используйте cURL или fopen, оба просты. Спросите, нужна ли вам дополнительная помощь с любым из них.

...