我正在尝试在三个简单的文本上使用Yahoo Content Analysis。
因为它有效,但如果我在substr命令中增加字符串长度,我得到:
{"error":{"lang":"en-US","description":"Unknown error","status":"500"}}
任何人都可以解释为什么会这样吗?根据文档,api应该接受更大的字符串。
此外,我无法弄清楚为什么每个字符串的限制不同。有什么想法吗?
这是我的代码
<?php
/**
* Function to use Yahoo to analyse some simple text
* @param String $text
* @param String $format
* @return String $content
*/
function yahoo_content_analysis($text, $format = 'json')
{
$url = "http://query.yahooapis.com/v1/public/yql";
$query = 'SELECT * FROM contentanalysis.analyze WHERE text = "' . $text . '"';
$characters = array(' ', '=', '"');
$replacements = array('%20', '%3D', '%22');
$query = str_replace($characters, $replacements, $query);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "q=$query&format=$format");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
$response = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
return $response;
}
// Text taken from wikipedia
$text1 = 'Computer programming (often shortened to programming or coding) is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs.';
$text2 = 'For the thousands of refugees and migrants landing on its beaches every day Greece Lesbos island is a step to safety and a brighter future in Europe';
$text3 = 'Hurricane Gert was a large tropical cyclone that caused extensive flooding throughout Central America and Mexico in September 1993. It originated over the southwestern Caribbean Sea and briefly attained tropical storm strength before crossing Nicaragua, Honduras, and the Yucatán Peninsula.';
// {"error":{"lang":"en-US","description":"Unknown error","status":"500"}}
$text1 = substr($text1, 0, 120);
echo $text1 . PHP_EOL;
$response1 = yahoo_content_analysis($text1);
echo $response1 . PHP_EOL; // json
echo PHP_EOL;
$text2 = substr($text2, 0, 116);
echo $text2 . PHP_EOL;
$response2 = yahoo_content_analysis($text2);
echo $response2 . PHP_EOL; // json
echo PHP_EOL;
$text3 = substr($text3, 0, 124);
echo $text3 . PHP_EOL;
$response3 = yahoo_content_analysis($text3);
echo $response3 . PHP_EOL; // json
答案 0 :(得分:0)
我遇到了同样的问题。这么长的字符串过去常常工作,所以在没有能够在网上找到任何关于他们为什么不再这样做的信息的情况下,我认为他们已经做了一个改变,限制了公共请求的字符串长度。可能由oauth验证的请求的长度更长。
我没有发现限制因字符串而异。这可能是因为您在计算字符数后正在清理文本。在对字符串进行清理之后,您将根据字符串中转换的空格数来增加长度。例如。