라즈베리파이에 txt 파일을 올렸는데 그 파일의 문자열 치환 문제 입니다.
글쓴이: i7uris / 작성시간: 목, 2016/03/17 - 2:13오후
// 파일 읽기 $fp = fopen($dirname . '/rename/'. basename($filename), "r"); $line_data = ""; while(!feof($fp)) { $line_data .= str_replace('\0', "\n", fgets($fp)); $line_data .= str_replace('\t', "\n", fgets($fp)); $line_data .= str_replace('%s', "\n", fgets($fp)); $line_data .= str_replace('\nm', "\n", fgets($fp)); $line_data .= str_replace('\x{25D8}\x{266A}', "\n", fgets($fp)); $line_data .= str_replace('\x{266A}', "\n", fgets($fp)); $line_data .= str_replace('\x{25D8}', "\n", fgets($fp)); } fclose($fp); // 여기서부터 쓰기 시작 $fp = fopen($dirname . '/rename/'. basename($filename), "wb"); fwrite($fp, $line_data); fclose($fp);
이 소스 입니다. 첨부파일의 코드를 지우기 위한 소스 입니다. php 이구요.. 유니코드 찾아서 했는데도 지워지질 않아서....
vim에서는 ^M 으로 보이는 코드 입니다. php로만 지워야 해서 소스 제작 중입니다..
유니코드가 잘못되었는지.. 소스가 잘못되었는지 모르겠습니다..
File attachments:
첨부 | 파일 크기 |
---|---|
a.PNG | 921바이트 |
Forums:
전형적인 새줄 문자 변환문제같은데요. 텍스트파일의
전형적인 새줄 문자 변환문제같은데요.
텍스트파일의 줄 바뀜을 나타낼때 OS에 따라 아래와 같은 관행차이가 있어서 생기는 문제입니다.
- Windows : "\r\n" ( == CRLF == "0x0d0x0a" )
- 유닉스계열 : "\n" ( == LF == "0x0a" )
\r 문자가 리눅스 등의 vim에서는 줄 끝마다 ^M 이 붙은 모양으로 보이게 됩니다.
해결하려면 "\r\n" --> "\n" 식으로 변환하면 됩니다.
PHP는 잘 모르지만 아마 아래와 같이 하시면 될 겁니다.
댓글 달기