file_get_contents给出错误文件名不能为空

时间:2015-03-08 17:07:06

标签: php

我有一个PHP脚本,在执行它时会抛出错误。

  

警告:file_get_contents():文件名在第68行的C:\ Apache24 \ htdocs \ image \ test2.php中不能为空。

     

警告:exif_imagetype():在第72行的C:\ Apache24 \ htdocs \ image \ test2.php中,文件名不能为空。

基本上脚本显示来自rss feed的图像,但问题不是只显示其中的一些图像。

这是脚本

error_reporting(E_ALL);
ini_set("display_errors", 1);

$url = "http://www.sahafah.net/rss.php";

$rss = file_get_contents($url);

ini_set('mbstring.substitute_character', "none");
$rss1= mb_convert_encoding($rss, 'UTF-8', 'UTF-8');
$rss3 = simplexml_load_string($rss1);
if($rss3)
{
    $items = $rss3->channel->item;
    foreach($items as $item)
    {
        $title = $item->title;
        $link = $item->link;
        $published_on = $item->pubDate;
        $description = $item->description;
        $category = $item->category;
        $guid = $item->guid;

        $string2 = $item->description;
        preg_match('/http.*.jpg/',$string2,$match2);
        $convert = implode(",", $match2);

        // Read image path, convert to base64 encoding
        $imageData = base64_encode(file_get_contents($convert));

        // Format the image SRC:  data:{mime};base64,{data};
        $src = 'data: '.exif_imagetype($convert).';base64,'.$imageData;

        // Echo out a sample image
        echo '<img src="', $src, '">';
    }
}

1 个答案:

答案 0 :(得分:1)

像许多PHP问题一样,答案是你的代码实际上没有任何问题。您所看到的并不是一个错误它是一个警告,这些将在生产中被抑制,您的代码将正常工作。修复警告/通知是一个良好的做法问题,无论你是否打扰,真的由你决定。但是,如果你想摆脱它们,你可以用file:[/ p>包装任何file_get_contents

if(file_exists($convert)){

    // Read image path, convert to base64 encoding
    $imageData = base64_encode(file_get_contents($convert));

    // Format the image SRC:  data:{mime};base64,{data};
    $src = 'data: '.exif_imagetype($convert).';base64,'.$imageData;

    // Echo out a sample image
    echo '<img src="', $src, '">';

}

或者,如果您不关心警告和通知,您可以在代码顶部执行以下操作:

error_reporting(E_ERROR);

这意味着打印到屏幕上的唯一内容将是实际错误,您不必受到警告和通知的干扰。