【问题标题】:PHP how to output filename containing apostrophe as valid HTML [duplicate]PHP如何将包含撇号的文件名输出为有效的HTML [重复]
【发布时间】: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 错误。

因为:

  1. 我使用包含图像标题的表格单元格的文件名。
  2. 我希望标题能够包含撇号。

我希望能够在文件名中保留撇号。

有什么方法可以修复我的 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 的问题。

标签: php html filenames


【解决方案1】:

如果您在 HTML 中使用双引号,则不会出现问题。

echo '<tr><td rowspan="3"><img src="'.$dir.'/'.$file.'"></td>';

...直到人们开始在文件名中添加双引号:)


根据您的问题:

echo '<tr><td rowspan="3"><img src="$dir/$file"></td>';

因为它会导致 PHP 中的撇号导致的错误 文件名。

这不是真的。这种方法的问题在于,在单引号内时不会评估变量,因此 HTML 中的输出将是; &lt;tr&gt;&lt;td rowspan="3"&gt;&lt;img src="$dir/$file"&gt;&lt;/td&gt;。这就是我在示例中使用字符串连接的原因。

【讨论】:

  • 哦,重复的问题有一个更好的解决方案。
猜你喜欢
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2019-04-21
  • 2019-05-21
相关资源
最近更新 更多