使用基本的“表单到文本文件”evite list类型的东西。除了它在列表底部插入一个空<li></li>
之外,它上面的所有内容都很有效。我正在使用回车分隔符,并尝试使用str_replace从循环中删除回车符。但它不是很有效。我有什么遗漏吗?或任何建议如何删除该bugger。
这是表单处理器文件
$name = $_POST[ 'name' ];
$guests = $_POST[ 'guests' ];
$data = "$name $guests\r";
$open = fopen("list.txt", "a");
fwrite($open, $data);
fclose($open);
PHP输出文件
$file = "list.txt";
$open = fopen($file, 'r');
$data = fread($open, filesize($file));
fclose($open);
$list = explode("\r", $data);
$string = str_replace("\r", "", $list);
foreach($string as $value) {
echo '<li>'.ucwords($value).'</li>'."\n";
}
以下是标记从PHP输出看起来的方式
<li>Person One 1</li>
<li>Person Two 4</li>
<li>Person Three 2</li>
<li></li>
非常感谢任何帮助。
答案 0 :(得分:4)
这是一种为空值进行防御性编码的方法......
foreach($string as $value)
{
//to be really foolproof, let's trim!
$value=trim($value);
//only output if we have something...
if (!empty($value))
{
echo '<li>'.ucwords($value).'</li>'."\n";
}
}
答案 1 :(得分:2)
在爆炸之前使用修剪来修剪字符串的尾随输入
$list = explode("\r", trim($data));
答案 2 :(得分:1)
删除str_replace
调用,只跳过不包含任何内容的元素,或只删除空格字符:
foreach($string as $value) {
if (!preg_match("/^\\s*$/", $value)) {
echo '<li>'.ucwords($value).'</li>'."\n";
}
}