[英]php getimagesize with persian file name
我正在尝试编写一个 Joomla 插件来为 HTML 文件中的每个<img>
添加宽度和高度标签。 一些图像文件名是波斯语,并且 getimagesize 面临错误。
代码是这样的:
@$dom->loadHTML('<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<img src="images\banners\س.jpg" style="max-width: 90%;" >
</body>
</html>
');
$x = new DOMXPath($dom);
foreach($x->query("//img") as $node)
{
$imgtag = $node->getAttribute("src");
$imgtag = pathinfo($imgtag);
$imgtag = $imgtag['dirname'].'\\'.$imgtag['basename'];
$imgtag = getimagesize($imgtag);
$node->setAttribute("width",$imgtag[0]);
$node->setAttribute("height",$imgtag[1]);
}
$newHtml = urldecode($dom->saveHtml($dom->documentElement));
当文件名中存在波斯字符时,getimagesize 显示:
警告:getimagesize(images\\banners\\س.jpg): 无法打开流:C:\\wamp64\\www\\plugin.php 中没有这样的文件或目录
我该如何解决这个问题?
感谢所有人,我无法在 WAMP 服务器(Windows 上的本地服务器)上获得结果,但是当我迁移到 Linux 服务器时,最终这段代码可以正常工作。
$html = $app->getBody();
setlocale(LC_ALL, '');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$x = new DOMXPath($dom);
foreach($x->query("//img") as $node)
{
$imgtag = $node->getAttribute("src");
if(strpos($imgtag,"data:image")===false)
{
$imgtag = getimagesize($imgtag);
$node->setAttribute("width",$imgtag[0]);
$node->setAttribute("height",$imgtag[1]);
}
}
$bodytag = $x->query("//body");
$node = $dom->createElement("script", ' /* java script which may be necessary on client */ ');
$bodytag[0]->appendChild($node);
$html = '<!DOCTYPE html>'."\n" . $dom->saveHtml($dom->documentElement);
一些提示:
<!DOCTYPE html>
应该添加到最终的 DOM 对象输出中:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.