小项目-残破的打字才能使其正常运行-如果您有任何想法,请告诉我tku!这个后期程序需要更多的单词,所以我们开始吧
<?php
$row = 1;
if (($handle = fopen("issue-heads-1.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) {
if ($row == 2) {
$file = fopen($data[14], "w");
$write = '
<?php
include "/home/history/public_html/issue1.php";
echo \'<a class="prev" href="\' . $data[16] . \'">\';
?>
';
fwrite($file, $write);
fclose($file);
}
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
答案 0 :(得分:1)
快速猜测-试试(未经测试):
$write = '
<?php
include "/home/history/public_html/issue1.php";
echo \'<a class="prev" href="' . $data[16] . '">\';
?>
';
使用多引号有点棘手...认为您可能已经忘记了哪些需要转义...
嗯...所以行不通...我接下来要尝试的是在几行上构造$ write变量(希望使工作更容易一些,因此也许更容易避免错误)-注意我还重复了一次filewrite来查看输出是什么:
$hF = fopen('__debug.log', "a"); //outside your loop
//inside loop
$hrf = $data[16];
$write = '<?php' + "\n";
$write .= 'include "/home/history/public_html/issue1.php";' + "\n";
$write .= "echo '<a class=\"prev\" href=\"";
$write .= $hrf;
$write .= "\">';" + "\n";
$write .= '?>';
fwrite($hF, $write);
并确保在脚本结束之前关闭文件:
//outside the loop
fclose($hF);
答案 1 :(得分:1)
如果您的CSV标头中有唯一的标头
$headers = [];
while (false !== ($data = fgetcsv($handle))) {
if(empty($headers)){
$headers = $data; //["foo", "bar"] (for example)
continue; //skip to next iteration
}
//$data [1,2] (for example)
$row = array_combine($headers, $data);
//$row = ["foo"=>1,"bar"=>2] (for example)
}
现在您可以使用文本标题代替16
等了
要注意的一件事是数组组合对数组的长度非常敏感。也就是说,如果它出错,则您可能有重复的键(数组键是唯一的),或者该行有一个额外的,
或一个丢失的键。
数组合并将第一个参数作为键,将第二个参数作为值,并将它们组合为一个关联数组。这样做还有一个好处,就是CSV列的顺序并不重要(这可能很重要)。
PS ,因为我不知道您的标题是什么,我将把这一部分留给您。但可以说#16
是issues
。现在,您可以像数据库源代码一样简单地进行$row['issues']
...
干杯。
答案 2 :(得分:1)
在fopen语句中使用write语句中的变量无效。我最终不得不使用ob_start使其工作。为使我走上正确的道路而乱七八糟。
<?php
ob_start();
include 'issue1.php';
$issueone = ob_get_contents();
ob_end_clean();
$row = 1;
if (($handle = fopen("issue-heads-1.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) {
$csv[] = $data;
}
fclose($handle);
}
$file = fopen($csv[$row][14], "w") or die("Unable to open file!");
fwrite($file, $issueone);
fwrite($file, "<a class=\"prev\" href=\"" . $csv[$row][16] . "\">");
fclose($file);
print "ok";
?>