我使用表单将要保存的项目列表提交到配置文本文件,但这些列表项目都应该在文本文件的同一行。然而,每当PHP分解并将列表项放入文件时,它都会自动在</li>
标记之前添加一行新行。为什么?我该如何防止这种情况发生。
代码:
$pro = explode("'n",$_POST["pro"]);
$proo = "<ul>";
for($index=0; $index<count($pro);$index++)
{
$proo .= "<li>";
$proo .= $pro[$index];
$proo .= "</li>";
}
$proo .= "</ul>";
$proo = str_replace("'n","",$proo);
编辑1
如果我将$proo
回显到网页中,它看起来像这样:
<ul><li>List Item 1
</li><li>List Item 2
</li><li>List Item 3
</li><li>List Item 4
</li><li>List Item 5</li></ul>
为什么每个</li>
之前都有换行符?
在那里的某个地方,它正在添加新的行。。。
谢谢!
David
换行可能是棘手的窗口或linux 'n
和/或'r
,所以我添加了一个修剪来删除爆炸后的任何额外内容,似乎有效。就我个人而言,我会用foreach()父亲而不是for(),但那只是我
$_POST["pro"]="1
2
3
4";
$pro = explode("'n",$_POST["pro"]);
$proo = "<ul>";
for($index=0; $index<count($pro);$index++)
{
$proo .= "<li>".trim($pro[$index])."</li>";
}
$proo .= "</ul>";
echo $proo;
输出:
<ul><li>1</li><li>2</li><li>3</li><li>4</li></ul>
在任何使用PHP_EOL的系统中,它都将等于相应的行结束字符序列。
explode(PHP_EOL,$_POST["pro"]);
上面的代码将始终有效
换行符(PHP_EOL值)为:
Windows:''r''n
*nix:''n
旧的Apple Macintosh(新的基于unix):''r
PHP_EOL文档
编辑:正如Dagon所指出的,浏览器默认使用Windows的换行符
explode("'r'n",$_POST["pro"]);
是