不能把我从网站上拿走的东西写进档案

时间:2016-08-01 09:00:55

标签: php file

$ dosya =的fopen(' A.TXT'' R&#39); $ dosya2 =的fopen(' f.txt'' W&#39);

function getTitle($satir) {

    $data = file_get_contents("http://$satir");

    $title = preg_match('/<title[^>]*>(.*?)<\/title>/ims',$data,$matches)?$matches[1]:null;

    $title=str_replace(",", null, $title);

    $title=str_replace("-", null, $title);

    $title=trim($title);

    $title= explode(" ",$title);

    foreach ($title as $val) {
        echo $val."<br>";
        fwrite($dosya2, $val)."<br>";    //??
    }

}

FCLOSE($ dosya); FCLOSE($ dosya2);

&GT?; 为什么不写入文本文件?

1 个答案:

答案 0 :(得分:3)

你有没有在某个地方打开文件?如果您在函数范围之外打开它,则需要从全局范围中获取它。请参阅variable scopes

function getTitle($satir) {
    global $dosya2;

    $data = file_get_contents("http://$satir");

    $title = preg_match('/<title[^>]*>(.*?)<\/title>/ims',$data,$matches)?$matches[1]:null;

    $title=str_replace(",", null, $title);

    $title=str_replace("-", null, $title);

    $title=trim($title);

    $title= explode(" ",$title);

    foreach ($title as $val) {
        echo $val."<br>";
        fwrite($dosya2, $val)."<br>";    //??
        }

    fclose($dosya2);
    }

另一点是,某些机器在实际关闭之前可能无法显示该文件。因此,像我一样,将fclose添加到脚本的末尾。试试我粘贴的代码并告诉我们。确保您的文件已打开。

另一点是代码风格。最好保持代码结构的可读性和可读性。如果你的函数说getTitle,那么你应该使用该函数来获取标题,而不是将其写入文件。也许为这种情况创建一个单独的编写器函数。或者,如果它是您写作的唯一地方,请重命名该功能。这不是一个错,它只是“糟糕的风格”。

编辑 - 我看到你编辑了代码。在函数被触发之前,您的文件将被关闭。那是因为当你将文件包含在你正在使用的PHP页面中时,它会解析整个文件。您的文件以打开文件开始,最后关闭它们。所以PHP打开文件并立即关闭它们。如果您希望这样做,您需要有一个单独的函数来关闭文件。我的建议是使用一个完全独立的函数来读/写文件,所以你不会无用地使用内存。在需要阅读时打开文件,在完成后关闭文件,在需要编写时打开文件,在完成后关闭文件。