php 去除回车换行符有三种方案:
<?php//php 不同系统的换行
//不同系统之间换行的实现是不一样的
//linux 与unix中用 \n
//MAC 用 \r
//window 为了体现与linux不同 则是 \r\n
//所以在不同平台上 实现方法就不一样
//php 有三种方法来解决
//1、使用str_replace 来替换换行
$str = str_replace(array("\r\n", "\r", "\n"), "", $str)
//2、使用正则替换
$str = preg_replace('//s*/', '', $str)
//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str)
?>
整个思路就是错的,我给你理清一下,你看哪个方便啊。你现在的做法:
提交数据,用STR_REPLACE转换,然后保存,显示时可以直接显示,但需要再编辑时又要用STR_REPLACE转换过来,你累不累啊。
其实只用转换一次就行了。
就是:提交保存时,直接保存无需转换,编辑时直接编辑无需转换,实际上就跟本不用转换嘛,只用在显示的地方转换一次就行了。你说呢?这样做还有个好处就是可以保存数据库的原始值不动,像你那转样转换来转换去,里面数据早乱了。
修改和删除指定行,我们一般用file将文件内容读取到数组中,根据数字索引比较容易修改,但是你要求用文件指针,这个比较麻烦,不管你用的是filesystem的函数还是spl类函数,都不可避免一个问题,对一个文件流 *** 作,最多替换流中间的某一段内容,不可能实现插入,又不是c语言的链表,
//修改第二行内容$f = fopen('test.txt', 'r+')
$i = 1
while (!feof($f)) {
if ($i == 2) {
fseek($f, 0, SEEK_CUR)
fwrite($f, 'aad')//这里的修改是替换形式,如果修改后这一行的长度比原来短,那么可以用空格填充到原来长度,这样实现修改,而且不影响后面的内容,但是修改后的比原来长就麻烦了,
break
}
fgets($f)
$i++
}
fclose($f)
//删除行同修改行一样,只不过是将原来行替换为同等长度的空格串
$f = fopen('test.txt', 'r+')
$j = 1
while (!feof($f)) {
if ($j == 2){
$row = fgets($f)
$len = strlen($row)
echo ftell($f)-$len."<br>"
fseek($f, ftell($f)-$len)
fwrite($f, str_pad(' ', $len, ' '))
break
}
fgets($f)
$j++
}
fclose($f)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)