我搜索了现有的帖子但找不到任何解决方案..这是我的问题。
我正在使用谷歌的文字语音来下载mp3文件。该功能适用于英文字符..和使用英文字符的语言。不幸的是,对于俄语(或任何非拉丁字符)我的脚本生成正确的URL,但不下载任何内容(但它确实下载了一个0kb的文件..空)
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
。
答案 0 :(得分:2)
您应该添加输入编码参数(ie=UTF-8
)并相应地对翻译文本进行编码。
例如,以下PHP代码段可用于从Google TTS服务下载“téléphone”(法语)的音频文件。请注意,如果没有输入编码参数,它将无法正常工作。
$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);
答案 1 :(得分:0)
这是一种非常糟糕的通过HTTP下载文件的方法,因为您需要将整个文件保留在内存中。要么使用cURL,要么使用fopen,两者都很简单。询问您是否需要更多帮助。