需要防弹这个图像解析器功能

时间:2009-11-12 03:31:51

标签: php

下面有一个函数,它读取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 . ' />';
        }
    }
    }

4 个答案:

答案 0 :(得分: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" />

`

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

这可能是问题。

答案 3 :(得分:0)

抱歉这个人,这个功能没有错。我有一个这个文件所依赖的遗留文件是不兼容的。更新该文件后,一切都很顺利。

现在我只需要this one out(假设我在此之后还剩下任何信誉:-) 我们是否会在这里获得调度