【问题标题】:Need to bulletproof this image parser function需要对这个图像解析器功能进行防弹
【发布时间】:2009-11-12 03:31:50
【问题描述】:

我在下面有一个函数,它读取 wp-content/uploads 的内容并写出它在那里找到的所有图像。

问题是它正在读取博客标题以确定图像路径,当博客标题中有一个点时,就会出现问题

博客标题是 abc123.com

网站网址是 abc123.com

测试图片文件名为abc123-1.jpg

img 标签应该变成:

<img src='http://abc123.com/wp-content/uploads/abc123-1.jpg' />

从下面的函数写入的实际图像标签是:

<img src='http://abc123.com/wp-content/uploads/abc123.com-1.jpg' />

我的问题是,“.com”是如何插入文件名的???

函数如下...

    function get_images()
    {
    global $options;
    foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
    }

    if($cb_custom_images !== "")
    {
    echo $cb_custom_images;
    }
    else
    {
    $dir = 'wp-content/uploads/';
    $url = get_bloginfo('url').'/wp-content/uploads/';
    $imgs = array();
        if ($dh = opendir($dir)) 
        {
        while (($file = readdir($dh)) !== false) 
            {
            if (!is_dir($file) && preg_match("/\.(bmp|jpeg|gif|png|jpg|)$/i", $file)) 
                {
                    array_push($imgs, $file);
                }
            }
            closedir($dh);
        } else {
            die('cannot open ' . $dir);
        }

        foreach ($imgs as $idx=>$img) 
        {
            $class = ($idx == count($imgs) - 1 ? ' class="xlast"' : '');
            echo '<img src="' . $url . $img . '" alt="' .$img . '"' . $class . ' />';
        }
    }
    }

【问题讨论】:

    标签: php


    【解决方案1】:

    确定你的测试文件被命名为abc123-1.jpg吗?我只是将您的代码复制到一个文件中并添加了虚拟脚手架,包括一个wp-content/uploads/abc123-1.jpg 文件。

    我在运行脚本时得到了正确的结果:

    % php img.php
    <img src="http://abc123.com/wp-content/uploads/abc123-1.jpg" alt="abc123-1.jpg" class="xlast" />
    

    `

    【讨论】:

      【解决方案2】:

      我认为这是 preg_match 问题尝试在 jpg 之后删除字符

      【讨论】:

        【解决方案3】:

        该目录下是否有 abc123.com-1.jpg 文件?

        这可能是问题所在。

        【讨论】:

          【解决方案4】:

          对不起,这个功能没有错。我有一个该文件所依赖的旧文件不兼容。更新该文件后,一切正常。

          现在我只需要计算this one out(假设我在这之后还有任何信誉:-) 我们这里有调度员吗?

          【讨论】:

            猜你喜欢
            • 2016-02-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多