我正试图从维基百科中删除这些图像。如果你无法获得它,免费许可媒体有什么用呢?原始脚本为here。
如果你把这个
http://upload.wikimedia.org/wikipedia/commons/2/26/%E7%9A%84-bw.png
在firefox中,它会立即转换为
http://upload.wikimedia.org/wikipedia/commons/2/26/的-bw.png
这样当您保存图像时,它会保存为的-bw.png
够简单呃?现在如何让PHP做到这一点?只是猜测,我尝试了utf8_decode($ fileName)..但是得到了错误的中文字符。
$src= "http://upload.wikimedia.org/wikipedia/commons/2/26/%E7%9A%84-bw.png";
$pngData = file_get_contents($src);
$fileName = basename($src);
file_put_contents($fileName, $pngData);
任何帮助表示赞赏,因为我真的不知道从哪里开始。
答案 0 :(得分:1)
您是否尝试过url_decode();
?
<?php
$url = 'http://upload.wikimedia.org/wikipedia/commons/2/26/%E7%9A%84-bw.png';
$parts = explode('/', $url);
$title = $parts[count($parts)-1]; //get last section
$title = urldecode($title);
?>
答案 1 :(得分:0)
Squirrelmail在源中将一个很好的函数转换为实体:
<?php
function charset_decode_utf_8 ($string) {
/* Only do the slow convert if there are 8-bit characters */
/* avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */
if (! ereg("[\200-\237]", $string) and ! ereg("[\241-\377]", $string))
return $string;
// decode three byte unicode characters
$string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e",
"'&#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",
$string);
// decode two byte unicode characters
$string = preg_replace("/([\300-\337])([\200-\277])/e",
"'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",
$string);
return $string;
}
?>