我正在使用表单提交要保存到配置文本文件的项目列表,但这些列表项应全部位于文本文件的同一行。然而,每次PHP拆分并将列表项放入文件中时,它会自动在</li>
标记之前添加新行。为什么?我该如何防止这种情况。
CODE:
$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>
之前都有换行符?
在那里的某个地方,它正在添加新线......
谢谢!
大卫
答案 0 :(得分:4)
换行符可能是棘手的窗口或linux \n
和/或\r
所以我添加了一个修剪以删除爆炸后的任何额外的东西,似乎工作。我个人会使用foreach()父亲而不是(),但那只是我
$_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>
答案 1 :(得分:0)
我只需要添加以下行:
$proo = str_replace("\r","",$proo);
无论出于何种原因,它都会添加一个返回字符。我不知道为什么,但感谢你的帮助。
答案 2 :(得分:0)
在您使用PHP_EOL的任何系统中,将远离相应的End-Of-Line-char序列。
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"]);
是接下来的方式