Php - url / string包含阿拉伯语字符

时间:2014-08-06 04:46:21

标签: php arabic

我正在研究从bing图像中抓取1张图像的东西 由于某种原因,file_get_contents不起作用所以我搜索了一下并得到了以下方法 - 这对英语关键词有效:

$fp = fsockopen("www.bing.com", 80, $errn, $errs);
$ar = "عربي"; 
$out  = "GET /images/search?q=$ar HTTP/1.1\r\n";
echo "$out";
echo "<Br><br>";
$out .= "Host: www.bing.com\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0\r\n";
$out .= "Connection: close\r\n";
$out .= "\r\n";

fwrite($fp, $out);

$response = "";
while ($line = fread($fp, 4096)) {
   $response .= $line;
} 
fclose($fp);


$response_body = substr($response, strpos($response, "\r\n\r\n") + 4);
// or
list($response_headers, $response_body) = explode("\r\n\r\n", $response, 2);

因此,如果$ ar包含英文关键字,那么它就是完美的。但是,当我尝试输入一个阿拉伯语单词时 - 结果是错综复杂的 - 并且不会将结果与bing图像搜索相匹配。

我的php文件的顶部:

<meta http-equiv='content-Type' content='text/html; charset=UTF-8'/>

非常感谢任何帮助。 TIA

2 个答案:

答案 0 :(得分:2)

我尝试使用english关键字在浏览器中访问该页面。效果很好。

http://www.bing.com/images/search/?q=dog

当我用你的字符串尝试它时,我得到404 respose:

http://www.bing.com/images/search/?q=عربي

我使用urlencode对您的字符串进行编码,然后再次使用Works,优先。

http://www.bing.com/images/search/?q=%D8%B9%D8%B1%D8%A8%D9%8A%0A

答案 - &gt;绝对使用urlencode($ar),这是你问题的解决方案。

答案 1 :(得分:2)

我知道你说你试过urlencode()但这对我有用:

$ ar = urlencode(“عربي”);