我正在尝试连接变量和字符串以形成将用于形成JSON对象的URL。但是,虽然我收到了有效的JSON响应(使用Wordreference API),因为在连接变量的地方不能正确形成URL。
例如,网址为http://api.wordreference.com/[APIKEY]/json/enfr/language
的响应:
{ "Error" : "NoTranslation", "Note" : "No translation was found for language\_\_.\nAucune traduction trouvée pour language\_\_.\n" }
应该有一个有效的回复它告诉我这个词不存在,即使它看起来网址形成正确且单词有效,如果我在浏览器中输入URL,我会得到有效的回复。
我认为它与language\_\_.
末尾的字符有关,其中正常的错误响应(例如,随机无效字'qwerty')是:
{
"Error" : "NoTranslation",
"Note" : "No translation was found for qweryty.\nAucune traduction trouvée pour qweryty."
}
最后的字符只有qweryty.\n
我使用的代码是:
$words = file("words.txt")[rand(0, 5449)];
$url = "http://api.wordreference.com/[APIKEY]/json/enfr/$words";
//I have also tried using $url = "http://api.wordreference.com/[APIKEY]/json/enfr/" . $words";
echo $url . "<br/>";
$json = file_get_contents($url);
echo $json;
PHP输出是:
http://api.wordreference.com/5d422/json/enfr/language
{ "Error" : "NoTranslation", "Note" : "No translation was found for language\_\_.\nAucune traduction trouvée pour language\_\_." }
(words.txt来自http://dictionary-thesaurus.com/wordlists/Nouns%285,449%29.txt)
注:我也有一个有效的api密钥,我刚刚在[APIKEY]中提到了这个问题。
答案 0 :(得分:2)
引用:http://www.w3schools.com/php/func_filesystem_file.asp每个数组元素都包含文件中的一行,新行仍然附加。
您需要从请求的末尾修剪换行符。
$words = str_replace(array("\r", "\n"), '', file("words.txt")[rand(0, 5449)]);