【发布时间】:2017-01-10 19:41:58
【问题描述】:
我是 PHP 新手,并从 http://www.techrepublic.com/article/create-a-dynamic-photo-gallery-with-php-in-three-steps/(问题的底部)改编了一个脚本,该脚本从一个目录生成一个图像表以及一些随附的 EXIF 数据。但是,此脚本适用于除三个图像之外的所有图像,这些图像在文件名中包含一个撇号 '。在一种情况下,脚本会输出以下 HTML:
<img src='../assets/img/art/Red Sky at Night, Sailor's Delight I.jpg'>
wich 当然是无效的 HTML。我无法使用以下脚本,
echo '<tr><td rowspan="3"><img src="$dir/$file"></td>';
因为它会导致由文件名中的撇号引起的 PHP 错误。
因为:
- 我使用包含图像标题的表格单元格的文件名。
- 我希望标题能够包含撇号。
我希望能够在文件名中保留撇号。
有什么方法可以修复我的 PHP 脚本,让我可以在文件名中保留撇号,同时仍然输出有效的 HTML?
<table class="catalog">
<?php
// define directory path
$dir = "../assets/img/art";
// iterate through files
// look for JPEGs
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (preg_match("/.jpg/", $file)) {
// read EXIF headers
$exif = exif_read_data("$dir/$file", "FILE,COMPUTED,ANY_TAG,IFD0,THUMBNAIL,COMMENT,EXIF", true);
// get image
echo "<tr><td rowspan='3'><img src='$dir/$file'></td>";
// get file name
echo "<th>Title</th><td>" . str_replace(".jpg", "", $file) . "</td></tr>";
// get timestamp
echo "<tr><th>Year</th><td>" . $exif['IFD0']['Copyright'] . "</td></tr>";
// get image dimensions
echo "<tr><th>Description</th><td>" . $exif['IFD0']['ImageDescription'] . "</td></tr>";
}
}
closedir($dh);
}
}
?>
</table>
【问题讨论】:
-
逗号是不是的问题。
'在Sailor's是的问题。