我有一个PHP脚本,它将输出一个随机文件名,但是我有一个以十六进制数字命名的文件名,PHP显然计算出十六进制并以常规数字输出。该图像可以正确显示,但是在h3标签中显示该图像的回声不起作用。有没有办法阻止这种行为?
当我查看检查元素时,我会正确看到图像的来源为十六进制。
示例:
图片来源src="MemeDatabase/0000023E.jpg"
文本显示为574
$dir = 'MemeDatabase';
$fileNames = array();
if(is_dir($dir)){
$handle = opendir($dir);
while(false !== ($file = readdir($handle))){
if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){
$fileNames[] = $file;
}
}
closedir($handle);
$fileName = array_rand($fileNames);
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $fileName);
echo "<a href=\"index.php\"><img src=\"MemeDatabase/$fileNames[$fileName]\"></a>";
} else {
echo "<p>There is an directory read issue</p>";
}
if(!isset($_COOKIE["0ShowUsage"])) {
echo "<h2>Click the image to proceed to the next meme</h2>";
setcookie("0ShowUsage", "False", time() + (86400 * 30), "/"); // 86400 = 1 day
} else {
echo "<h3>$withoutExt</h3>";
}
答案 0 :(得分:1)
如果十六进制数字以%
开头,则在解析URL时将其视为十六进制代码,而不是PHP。您需要使用urlencode()
对其进行正确编码。
echo "<a href=\"index.php\"><img src=\"MemeDatabase/" . urlencode($fileNames[$fileName]) . "\"></a>";