PHP fopen - 将变量写入txt文件

时间:2017-05-27 13:58:48

标签: php fopen

我检查了这个,它不适合我! PHP Write a variable to a txt file

所以这是我的代码,请看看!我想将变量的所有内容写入文件。但是当我运行代码时,它只会写出内容的最后一行!

<?php
$re = '/<li><a href="(.*?)"/';
$str = '
<li><a href="http://www.example.org/1.html"</a></li>
                        <li><a href="http://www.example.org/2.html"</a></li>
                        <li><a href="http://www.example.org/3.html"</a></li> ';

preg_match_all($re, $str, $matches);
echo '<div id="pin" style="float:center"><textarea class="text" cols="110" rows="50">';
// Print the entire match result

foreach($matches[1] as $content)
  echo $content."\r\n";
$file = fopen("1.txt","w+");
echo fwrite($file,$content);
fclose($file);
?>

当我打开1.txt时,它只显示我

  

http://www.example.org/3.html

应该是

http://www.example.org/1.html
http://www.example.org/2.html
http://www.example.org/3.html

我做错了什么?

2 个答案:

答案 0 :(得分:2)

foreach($matches[1] as $content)
     echo $content."\r\n";

只迭代数组并使$content成为最后一个元素(你没有{}所以它是一个单行)。

您的问题的简单演示,https://eval.in/806352

你可以使用implode使用。

fwrite($file,implode("\n\r", $matches[1]));

您还可以使用file_put_contents来简化此操作。根据手册:

  

此函数与连续调用fopen(),fwrite()和fclose()以将数据写入文件相同。

所以你可以这么做:

$re = '/<li><a href="(.*?)"/';
$str = '
<li><a href="http://www.example.org/1.html"</a></li>
                        <li><a href="http://www.example.org/2.html"</a></li>
                        <li><a href="http://www.example.org/3.html"</a></li> ';

preg_match_all($re, $str, $matches);
echo '<div id="pin" style="float:center"><textarea class="text" cols="110" rows="50">';
file_put_contents("1.txt", implode("\n\r", $matches[1]));

答案 1 :(得分:0)

迟到的答案,但您可以将file_put_contentsFILE_APPEND标志一起使用,也不要使用正则表达式来解析HTML,使用像DOMDocument这样的HTML解析器},即:

$html = '
<li><a href="http://www.example.org/1.html"</a></li>
<li><a href="http://www.example.org/2.html"</a></li>
<li><a href="http://www.example.org/3.html"</a></li>';

$dom = new DOMDocument();
@$dom->loadHTML($html); // @ suppress DOMDocument warnings
$xpath = new DOMXPath($dom);

foreach ($xpath->query('//li/a/@href') as $href) 
{
    file_put_contents("file.txt", "$href->nodeValue\n", FILE_APPEND);
}