Для некоторого фона у меня есть немного кода, который я использую для генерации HTML-файлов, которые содержат ссылку на уникальный код. В конечном итоге это заканчивается на 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);
}
Это тот же результат?