HTML检测<img/>标记中的图片扩展名

时间:2013-12-31 07:42:49

标签: php html image

我一般都是PHP和HTML的新手。我正在尝试创建一个脚本,我可以上传图像,然后在面板上显示图像。它按预期工作,但现在我遇到问题,如果上传的图像具有不同的扩展名。

例如,我上传以在面板上显示它的常用图像是JPEG。但是当我上传PNG图像时,图片将无法加载,因为标签已经过硬编码,无法将每个上传的图像显示为.jpg。显示图像的面板如下所示:

$html  = '<div style="width: 100%"><a href="'.$this->database('source').'" target="_blank"><img alt="'.$this->database('char_name').'-'.$this->database('char_origin').'" src="'.HTML_PATH_PLUGINS_DB.'files/image.jpg" style="width: 100%; height: auto;" /></a></div>';

我想要的是使用代码来检测图像的扩展名,或者只是使用通配符,以便浏览器加载图像而不管其扩展名。

我尝试用.jpg替换.jpg,但当然,它不起作用,因为它包含在“”中。我希望有一个简单的方法来做到这一点。我试着查看Stackoverflow,但我仍然不明白如何做到这一点。任何帮助表示赞赏。谢谢。

编辑:这是整个代码:

class PLUGIN_PORTRAIT_PANEL extends Plugin
{
    function __construct()
    {
        parent::__construct();

        $this->fields = array(
        'char_name'=>'',
        'char_name_url'=>'',
        'char_origin'=>'',
        'char_origin_url'=>'',
        'source'=>'',
        'image'=>''
        );
    }

    public function dashboard_config()
    {
        global $Language;

        // Character Name
        $html  = Html::label(array('content'=>$Language->get('CHAR_NAME')));
        $html .= Html::input(array('name'=>'char_name', 'type'=>'text', 'value'=>$this->database('char_name')));

        $html .= Html::label(array('content'=>$Language->get('CHAR_NAME_URL')));
        $html .= Html::input(array('name'=>'char_name_url', 'type'=>'text', 'value'=>$this->database('char_name_url')));

        // Character Origin
        $html .= Html::label(array('content'=>$Language->get('CHAR_ORIGIN')));
        $html .= Html::input(array('name'=>'char_origin', 'type'=>'text', 'value'=>$this->database('char_origin')));

        $html .= Html::label(array('content'=>$Language->get('CHAR_ORIGIN_URL')));
        $html .= Html::input(array('name'=>'char_origin_url', 'type'=>'text', 'value'=>$this->database('char_origin_url')));

        // Image Source
        $html .= Html::label(array('content'=>$Language->get('SOURCE')));
        $html .= Html::input(array('name'=>'source', 'type'=>'text', 'value'=>$this->database('source')));

        // Image
        $html .= Html::label(array('content'=>$Language->get('UPLOAD')));
        $html .= Html::input(array('name'=>'image', 'type'=>'file'));
        $html .= Html::div(array('class'=>'tip', 'content'=>$Language->get('UPLOAD_NOTICE')));

        return $html;
    }

    public function blog_body()
    {
        $html  = '<div style="width: 100%"><a href="'.$this->database('source').'" target="_blank"><img alt="'.$this->database('char_origin').'-'.$this->database('char_name').'" src="'.HTML_PATH_PLUGINS_DB.'ddok/'.$this->database('image').'" style="width: 100%; height: auto;" /></a></div>';
        $html .= '<a href="'.$this->database('char_name_url').'" target="_blank">'.$this->database('char_name').'</a> from <a href="'.$this->database('char_origin_url').'" target="_blank">'.$this->database('char_origin').'</a>.';

        return $html;
    }
}

2 个答案:

答案 0 :(得分:1)

您正在尝试查找文件的扩展名,或者在本例中是图像。

为此,您可以使用PHP中提供的pathinfo()

因此,它会像这样使用,如下例所示。

$file = pathinfo('/www/htdocs/inc/black.png');
echo $file['extension'], "\n";

以下是IDEONE的示例。

这将返回文件扩展名.png

现在,您还需要文件名,因此如下所示:

echo $file['filename'], "\n"; // since PHP 5.2.0

这将返回black

答案 1 :(得分:0)

如上所述,您需要使用

选择原始文件扩展名
$_FILES['theFormField']['name']

并从中生成后缀。有缺陷,但仍然:

//on post
//get suffix.
$a = explode('.',$_FILES['theField']['name']);
$theSuffixToBeSavedInDatabase = $a[1];

//later, upon view
//get the suffix stored in db.
$suffix = $rec['FileSuffix']
echo '<img src='" . $rec['RadomFileNameWithoutSuffix'] . '.' . $suffix . '" />';

或者,如果您已经在数据库中存储了一堆未知类型的图像,请抓住前三个字节并查看它所说的内容并从中生成后缀。