PHP:file_put_contents 并在 for 循环中写入多个文件不起作用

PHP: file_put_contents and writing to multiple files in a for loop not working

对于某些背景,我有一些代码用于生成 html 文件,其中包含 link 到唯一代码。最终,这最终会出现在分发给客户的 USB 驱动器上。这是批量完成的,因此我可以根据需要使用代码创建尽可能多的自定义文件。

if ( !empty($_POST) ) {

$url = trim($_POST['url']);

$codes = trim($_POST['codes']);

$codes_array = explode("\n", $codes);

$codes_array = array_filter($codes_array, 'trim');

foreach ($codes_array as $code) {

    $html = <<<EOD
<html>
<head></head>
<body>
<a href="$url$code">Download Now</a>
</body>
</html>
EOD;

    file_put_contents("codes/".$code.".html",$html);

}

}

发生的情况是该文件夹中只生成了一个文件,但它的名称始终是数组中的最后一个元素,其他文件没有生成,似乎文件被覆盖了,即使 $code 是每次迭代都不同。

我也尝试了以下代码,结果相同。

$fh = fopen("codes/".$code.".html", "w+");
fwrite($fh, $html);
fclose($fh); 

有什么想法吗?

替换

$codes_array = array_filter($codes_array, 'trim');

$codes_array = array_map('trim', $codes_array);

否则只有最后一个元素最后没有\n

你试试看:

foreach ($codes_array as $key => $value ) {

    $html = <<<EOD
<html>
<head></head>
<body>
<a href="$url$code">Download Now</a>
</body>
</html>
EOD;

    file_put_contents("codes/".$value.".html",$html);

}

结果一样吗?