0

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

在那里的某个地方,它正在添加新的线条......

谢谢!

大卫

4

2 回答 2

4

换行符可能是棘手的 windows 或 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>
于 2012-09-13T20:14:36.683 回答
0

在您使用的任何系统中,PHP_EOL将等于相应的 End-Of-Line-char-sequence。

explode(PHP_EOL,$_POST["pro"]);

上面的代码将始终有效。

换行符(PHP_EOL 值)是:
Windows:\r\n
*nix:\n
旧 Apple Macintosh(新的基于 unix):\r

PHP_EOL doc

编辑:正如Dagon
所指出的,浏览器默认使用 Windows 的换行符。

explode("\r\n",$_POST["pro"]);

那是要走的路

于 2012-09-13T20:24:15.237 回答