PHP:警告:file_get_contents():文件名不能为空

时间:2014-07-16 19:31:09

标签: php spintax

我正在我的服务器上尝试这个新脚本,我似乎无法弄清楚为什么它一直给我错误:

警告:file_get_contents():第51行的/includes/classes/spin_article.php中的文件名不能为空

此行提供错误 - > $ string = file_get_contents($ files [rand(1,count($ files))-1]);

<?PHP
class Spintax
{
    public function process($text)
    {
        return preg_replace_callback(
            '/\{(((?>[^\{\}]+)|(?R))*)\}/x',
            array($this, 'replace'),
            $text
        );
    }

    public function replace($text)
    {
        $text = $this->process($text[1]);
        $parts = explode('|', $text);
        return $parts[array_rand($parts)];
    }
}
?>

<?PHP
ob_start();
$files = glob("spintax_articles/*.txt");
$spintax = new Spintax();
$string = file_get_contents($files[rand(1, count($files)) -1]);
echo $spintax->process($string);
$page = ob_get_contents();
ob_end_flush();
$fp = fopen("content.txt","w");
fwrite($fp,$page);
fclose($fp);
?>

1 个答案:

答案 0 :(得分:2)

如果实际存在匹配的文件,则可能会得到比最大值大1的随机索引。使用:

$string = file_get_contents($files[rand(1, count($files)-1)]);

请注意-1展示位置。

如果没有文件,你应该使用条件来检查。

<?php
$files = glob("spintax_articles/*.txt");

if(!empty($files)) {

    $spintax = new Spintax();
    $string  = file_get_contents($files[mt_rand(1, count($files)-1)]);

    $fp = fopen("content.txt", "w");
    fwrite($fp, $spintax->process($string));
    fclose($fp);
}
?>