PHP fopen – запись переменной в файл txt

Я проверил это и не работал на меня! PHP Запишите переменную в файл txt

Так что это мой код, пожалуйста, взгляните! Я хочу записать все содержимое переменной в файл. Но когда я запускаю код, он записывает только последнюю строку содержания!

<?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 

Я что-то делаю неправильно?

Эта

 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])); 

Поздний ответ, но вы можете использовать file_put_contents с флагом FILE_APPEND , также не используйте регулярное выражение для анализа HTML , используйте парсер HTML например DOMDocument , то есть:

 $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); }