$ 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?; 为什么不写入文本文件?
答案 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打开文件并立即关闭它们。如果您希望这样做,您需要有一个单独的函数来关闭文件。我的建议是使用一个完全独立的函数来读/写文件,所以你不会无用地使用内存。在需要阅读时打开文件,在完成后关闭文件,在需要编写时打开文件,在完成后关闭文件。