在PHP中,列表项一直转到下一行


List items keep going to the next line in PHP

我使用表单将要保存的项目列表提交到配置文本文件,但这些列表项目都应该在文本文件的同一行。然而,每当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"]);