목차
回复讨论(解决方案)
백엔드 개발 PHP 튜토리얼 TXT 文件操作问题,急

TXT 文件操作问题,急

Jun 23, 2016 pm 01:56 PM
txt 작동하다 문서

用fwrite 写入字符串到文档里面怎么让指针停在最后一行的末尾而不是下一行啊?
每次在字符串后面加上PHP_EOL或者“\r\n”的话写完最后一行的时候,在文档里面看着是这样的
"String 1"
"String 2"
但是实际上我用fgets(代码如下)读取时

$fname1=("pending.txt");$fp1=fopen($fname1, "r+");while(!feof($fp1)){		$read=explode(";", fgets($fp1));//字符串中用;来打成数组	echo "read[0]= ".$read[0];// 用来测试	echo "<br/>";}fclose($fp1);
로그인 후 복사

测试结果如下
read[0]= vvv@222.dpn
read[0]= vvv@333.dpn
read[0]=
为什么多出一个呢是因为写入最后一行字符串的时候。空格了一下,在TXT 文档里面按行读取就能读取到。
如何避免这个问题呢?因为需求我必须要用fgets(),如果功能允许我用file_get_contents()就好说了。。
求大神给解决方案


回复讨论(解决方案)

有什么不对吗?
你的 while(!feof($fp1)) 只在读到文件尾的时候才成立
而最后一行的 fgets($fp1) 只是读完了内容,并没有读到文件尾
要到下一轮擦会读到文件尾

所以可写作

while($buf = fgets($fp1)){       $read=explode(";", $buf);//字符串中用;来打成数组    echo "read[0]= ".$read[0];// 用来测试    echo "<br/>";}
로그인 후 복사
로그인 후 복사

有什么不对吗?
你的 while(!feof($fp1)) 只在读到文件尾的时候才成立
而最后一行的 fgets($fp1) 只是读完了内容,并没有读到文件尾
要到下一轮擦会读到文件尾

所以可写作

while($buf = fgets($fp1)){       $read=explode(";", $buf);//字符串中用;来打成数组    echo "read[0]= ".$read[0];// 用来测试    echo "<br/>";}
로그인 후 복사
로그인 후 복사


多谢了,这个问题是我引用删除里面的行数才引发的。我想删除某一行,原本的代码是这个
while(!feof($fp1)){       $read=explode(";", fgets($fp1));//获取txt中的行并且打成数组    if(read[0]==userinfo_en[0]&&read[2]==userinfo_en[2])    {       file_put_contents($file,fgets($fp1));    }}fclose($fp1);//userinfor_en = username  ;password; ccn ;exp; cvv; type ;//                                   0		         1                   2          3        4         5//这个是从别的地方用GET拿到的,意思就是执行的时候如果//读到接收到数据就把包含接收到的这一行全删了,可是我用了后直接除了该行,其余的行全删了。这才是核心问题,请问该如何//解决呢?我想了好久了
로그인 후 복사

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Quark Cloud Disk에서 Baidu Cloud Disk로 파일을 전송하는 방법은 무엇입니까? Quark Cloud Disk에서 Baidu Cloud Disk로 파일을 전송하는 방법은 무엇입니까? Mar 14, 2024 pm 02:07 PM

Quark Cloud Disk에서 Baidu Cloud Disk로 파일을 전송하는 방법은 무엇입니까?

0x80004005 오류 코드가 나타나는 경우 수행할 작업 편집기에서 0x80004005 오류 코드를 해결하는 방법을 알려줍니다. 0x80004005 오류 코드가 나타나는 경우 수행할 작업 편집기에서 0x80004005 오류 코드를 해결하는 방법을 알려줍니다. Mar 21, 2024 pm 09:17 PM

0x80004005 오류 코드가 나타나는 경우 수행할 작업 편집기에서 0x80004005 오류 코드를 해결하는 방법을 알려줍니다.

hiberfil.sys 파일이란 무엇입니까? hiberfil.sys를 삭제할 수 있나요? hiberfil.sys 파일이란 무엇입니까? hiberfil.sys를 삭제할 수 있나요? Mar 15, 2024 am 09:49 AM

hiberfil.sys 파일이란 무엇입니까? hiberfil.sys를 삭제할 수 있나요?

Linux Deploy 작업 단계 및 주의사항 Linux Deploy 작업 단계 및 주의사항 Mar 14, 2024 pm 03:03 PM

Linux Deploy 작업 단계 및 주의사항

win10 부팅 암호를 얻기 위해 F2 키를 누르는 것을 잊은 경우 수행할 작업 win10 부팅 암호를 얻기 위해 F2 키를 누르는 것을 잊은 경우 수행할 작업 Feb 28, 2024 am 08:31 AM

win10 부팅 암호를 얻기 위해 F2 키를 누르는 것을 잊은 경우 수행할 작업

Linux 시스템의 로그 보기 명령어에 대한 자세한 설명! Linux 시스템의 로그 보기 명령어에 대한 자세한 설명! Mar 06, 2024 pm 03:55 PM

Linux 시스템의 로그 보기 명령어에 대한 자세한 설명!

Huawei Mate60 Pro 스크린샷 작업 단계 공유 Huawei Mate60 Pro 스크린샷 작업 단계 공유 Mar 23, 2024 am 11:15 AM

Huawei Mate60 Pro 스크린샷 작업 단계 공유

MySQL에서 .ibd 파일의 역할과 관련 주의사항에 대한 자세한 설명 MySQL에서 .ibd 파일의 역할과 관련 주의사항에 대한 자세한 설명 Mar 15, 2024 am 08:00 AM

MySQL에서 .ibd 파일의 역할과 관련 주의사항에 대한 자세한 설명

See all articles