xyst0524
发表于 2011-5-7 19:23:52
回复 jeongee 的帖子
在foreach之前就截掉了哦
你再仔细看看
jeongee
发表于 2011-5-7 19:26:52
本帖最后由 jeongee 于 2011-5-7 19:35 编辑
回复 xyst0524 的帖子
没看见,我说的是用substr函数截掉最后的<|>
不是说的explode
重点是explode函数,你试试print_r explode('|','a|b|')和explode('|','a|b')的值你就明白了
或者你别用foreach,直接for,从0到count($data) - 1
再或者,你先array_pop($data),把最后一个值弹出来,再foreach
xyst0524
发表于 2011-5-7 19:36:42
回复 jeongee 的帖子
我是这样理解的
第一截之后变成一个数组,
第二截就是从数组里面再次取得单个的值并编辑这些值
照你的意思的话三个变量是远远不够的...而且就不需要加上$message后面的那一句"<|>"了。
jeongee
发表于 2011-5-7 19:41:19
本帖最后由 jeongee 于 2011-5-7 19:50 编辑
回复 xyst0524 的帖子
简单点的只要一句话就可以了
第一种解决:
在这个之后加:
$data = explode('<|>', $buffer);
array_pop($data);第二种:
$data = explode('<|>',$buffer);
的前面加
$buffer = substr($buffer,0,strlen($buffer) - 3);
第三种:
foreach那行
改成
for($i = 0 ,$length =count($data) - 1; $i < $length; $i ++)[这种方法,循环体可以也要跟着改变]
---------------------------------------
jeongee
发表于 2011-5-7 19:47:43
回复 xyst0524 的帖子
你没有理解你的问题到底出在哪
你试试print_r ( explode('|','a|b|'))和print_r ( explode('|','a|b'))
看有什么不一样,然后再思考下你的程序。
xyst0524
发表于 2011-5-7 19:56:39
回复 jeongee 的帖子
嗯
有点明白explode函数了
那不用ci写这个的时候为什么就不报错呢?
<html>
<head>
<title>网络留言板</title>
</head>
<body>
<?php
$filename = "text_data.txt";
if(isset($_POST["sub"]))
{
$message = $_POST["username"]."||".$_POST["title"]."||".$_POST["mess"]."<|>";
$handle = fopen($filename, "a");
flock($handle, LOCK_EX);
fwrite($handle, $message);
flock($handle, LOCK_UN);
fclose($handle);
}
if(file_exists($filename))
{
$handle = fopen($filename, "r");
flock($handle, LOCK_SH);
$buffer.= fread($handle, 1024);
$data = explode('<|>', $buffer);
foreach($data as $line)
{
list($username, $title, $mess) = explode('||', $line);
if($username !=="" && $title !=="" && $mess !=="")
{
echo $username."说:".$mess.'<hr>';
}
}
flock($handle, LOCK_UN);
fclose($handle);
}
?>
<form action="" method="post">
用户名:<input type="text" name="username"><br>
主题:<input type="text" name="title"><br>
<textarea name="mess" rows="10" cols="50">请在这里留言!</textarea>
<input type="submit" name="sub" value="提交">
</form>
</body>
</html>
jeongee
发表于 2011-5-7 20:06:31
回复 xyst0524 的帖子
那可能是你PHP.INI把错误提示关了,而CI默认是把错误提示打开了的
xyst0524
发表于 2011-5-7 20:52:48
回复 jeongee 的帖子
额,貌似明白了。谢谢了
zfm1988
发表于 2011-5-7 23:32:38
呵呵,观望中
jackiesun
发表于 2011-5-11 20:49:23
error_reporting(E_ALL & ~(E_STRICT | E_NOTICE));