【问题标题】:fill gallery reading png files in dir php填充画廊在 dir php 中读取 png 文件
【发布时间】:2014-11-20 06:15:13
【问题描述】:

我有一个像这样的目录结构:

IMAGES/
       imgex2.png
       s_imgex2.png
       imgre.png
       s_imgre.png

imgex2.pngimgre.png 是大图,s_imgex2.pngs_imgre.png 是缩略图

我想用 php 中的绝对路径填充画廊

<li><a href="www.site.com/images/imgex2.png">
    <img src="images/s_imgex2.png" alt="ex2" />
</a></li>
<li><a href="www.site.com/images/imgre.png">
    <img src="images/s_re.png" alt="re" />
</a></li>

如何先用大图像填充给定的路径,然后是缩略图(文件名开头有一个“s_”)并在不带“img”字符串的情况下放入 alt="" 名称?这里的问题并不总是文件名有“img”所以修剪不是一个选项

其他问题是 getcwd() 返回 'file:///D:/Hosting/2543486/html/site/images' 而不是 www.mysite.com

我在做

<?
$dir = './';
$files = glob( $dir . '*.png');
foreach( $files as $file) {
    $path  = getcwd().$file;
    $path  = substr_replace($path, 'file:///D:/Hosting/2543486/html/', 0); 

    $site       = "http://www.site.com/".$path.$file;
    $thumb_site = "http://www.site.com/".'s_'.$path.$file;
    $alt        = substr_replace($file, 'img', 0); 

    echo '<li><a href="'.$thumb_site.'">';
    echo '    <img src="'.$thumb_path.'" alt="'.$alt.'" />';
    echo '</a></li>';


}
?>

但得到:

http://www.site.com/file:///D:/Hosting/2543486/html/site/imgex2.png
http://www.site.com/s_file:///D:/Hosting/2543486/html/site/imgex2.png

如何解决?

【问题讨论】:

  • 您的站点根目录是否指向Hosting\2543486\html\siteHosting\2543486\html
  • 哦抱歉我写错了它会打印 Hosting\2543486\html\site

标签: php gallery


【解决方案1】:

我会这样做:

$dir = './';
$files = glob( $dir . 's_*.png');
foreach( $files as $file) {

    $site       = "/images/".str_replace("s_","",$file);
    $thumb_site = "/images/".$file;
    $alt        = str_replace(".png","",str_replace("s_img","",$file)); 

    echo '<li><a href="'.htmlentities($site,ENT_COMPAT,"UTF-8").'">';
    echo '    <img src="'.htmlentities($thumb_site,ENT_COMPAT,"UTF-8").'" alt="'.htmlentities($alt,ENT_COMPAT,"UTF-8").'" />';
    echo '</a></li>';


}

编辑

如果你真的很想使用绝对路径,只需稍微改变一下即可:

$root="http://www.example.com";
$dir = './';
$files = glob( $dir . 's_*.png');
foreach( $files as $file) {

    $site       = $root."/images/".str_replace("s_","",$file);
    $thumb_site = $root."/images/".$file;
    $alt        = str_replace(".png","",str_replace("s_img","",$file)); 

    echo '<li><a href="'.htmlentities($site,ENT_COMPAT,"UTF-8").'">';
    echo '    <img src="'.htmlentities($thumb_site,ENT_COMPAT,"UTF-8").'" alt="'.htmlentities($alt,ENT_COMPAT,"UTF-8").'" />';
    echo '</a></li>';


}

【讨论】:

  • 有没有办法获取绝对路径?或者也许只是添加$site = "www.site.com";,然后在循环内$site .= "/images/" .... ;
  • @cMinor 如果你真的想要绝对路径,就用"http://www.site.com/images/".$file等等吧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
相关资源
最近更新 更多