2010-08-21 3 views
27

텍스트 파일에 숫자를 추가하는 PHP 스크립트를 작성하고 있습니다. 나는이 같은 모든 행에 하나 개의 번호를 갖고 싶어 :file_put_contents, file_append 및 줄 바꿈

1 
5 
8 
12 

내가 file_put_contents($filename, $commentnumber, FILE_APPEND) 사용하는 경우, 결과는 다음과 같습니다 나는 file_put_contents($filename, $commentnumber . "\n", FILE_APPEND) 같은 줄 바꿈을 추가하는 경우

15812 

, 공간이 이후에 추가 마지막에 각 숫자와 하나의 빈 줄 (밑줄 공백을 나타냄) :

1_ 
5_ 
8_ 
12_ 
_ 
_ 

어떻게 공백없이 숫자를 내가 원하는 방식을 추가하는 기능을합니까?

+1

의 insted. PHP 함수는 공백을 추가하지 않습니다 LOL –

답변

0

$commentnumber에 이미 공백이 포함되어 있지 않으면 해당 공백을 생성하는 코드에 제공된 코드가 없습니다. 이 경우 대신 trim($commentnumber)을 사용하면됩니다.

$commentnumber이 빈 문자열이 될 수있는 경우를 제외하고는 코드 하단에 빈 줄을 설명하는 코드가 없습니다. 이 경우 숫자 0을 출력하려면 intval($commentnumber)을 사용하십시오.

물론 두 개 중 하나만 필요합니다. 문자열과 같은 내용을 유지하려면 trim(); 항상 정수를 원하면 intval()을 사용하십시오. 이미 자동으로 트림됩니다.

실제 코드에 "\n" 대신 실수로 " \n"을 썼을 수도 있지만 여기에 게시 한 코드는 정확합니다.

+0

$ commentnumber의 출력을 다시 확인했습니다. 참으로 공간이 없습니다. 'echo $ commentnumber.'를 수행하면 \ n " ', HTML 출력은 줄 바꿈을하지 않고 이후에 공백을 표시합니다. – user426965

+3

음, ** HTML **에서는 완전히 정상입니다. – Timwi

+0

아니요. 제가 작성한 다른 스크립트에서 올바른 줄 바꿈/줄 바꾸기를 수행하기 때문입니다. – user426965

44

PHP EOL 상수로 사용해 보셨습니까?


file_put_contents($filename, $commentnumber . PHP_EOL, FILE_APPEND) 

--- 추가는 ---

난 그냥 내 파일 편집기가 같은 않는다는 것을 깨닫게하지만 worrie하지 않는,이 에디터의 장소가 그 신호하는 것을 단지 유령 문자 개행 당신은 시도 할 수있다이

 
A file with EOL after the last number looks like: 
1_ 
2_ 
3_ 
EOF 

but a file without that last character looks like 

1_ 
2_ 
3 
EOF 

where _ means a space character 

당신은


$lines = explode(PHP_EOL, file_get_contents($file)); 
foreach($lines as $line) { 
    var_dump($line); 
} 

내부에 뭐가 있는지보고 PHP를 사용하여 파일의 내용을 구문 분석을 시도 할 수 있습니다

... 까다로운

+0

예, "\ n"을 (를) 사용하는 것과 같은 문제가 있습니다. – user426965

+0

정말 멋지고 정교한 방법 –

1

성가신 등록, 당신이 가진 것은 절대적으로 좋습니다. PHP_EOL과 "\ n"은 완전히 동일합니다.

제공 한 코드에 아무런 문제가 없으므로 끝에 $ 공백이있는 $ commentnumber 값이어야합니다. 명시된 바와 같이 trim() 함수를 통해 $ commentnumber를 실행하십시오.

file_put_contents($filename, trim($commentnumber . "\n"), FILE_APPEND); 

행운을 빕니다.

+4

트림 기능을 사용하면 새 줄을 잘라낼 수 있습니다.) file_put_contents ($ filename, trim ($ commentnumber). "\ n", FILE_APPEND); –

0

코드 및 응답을 읽은 후에 이론을 제안했습니다 ...

코드에 문제가 있음을 알 수 없으므로 어떻게 파일을 열고 읽었습니까? 실제로 텍스트 편집기에서 열 었는가? PHP 스크립트를 사용해 보셨습니까? 그렇다면 텍스트 편집기로 파일을 열고 각 줄의 끝에 실제로 공간이 있는지 확인하십시오. 실제로 있다면 ... 음,이 대답의 나머지 부분은 무시하십시오. 그렇지 않다면 계속 읽어보십시오. 예를 들어

,이 같은 것을 사용하는 경우 :

<?php 
$lines = file($filename); 
if($lines) // Error reading 
    die(); 
foreach($lines as $line) 
    echo $line."<br />"; 

그런 것 때문에 항상 길 file() 작업의 줄 끝에 공백. $line에는 공백이 없어야합니다 (예 : 개행 문자).
HTML은 공백, 탭, 개행 등 공백으로 처리하므로, $line의 끝에 공백이 있으면 HTML 출력에 공백으로 표시됩니다.

해결 방법 : rtrim($line)을 사용하여 줄 끝의 공백을 제거하십시오.

<?php 
$lines = file($filename); 
if($lines) // Error reading 
    die(); 
foreach($lines as $line) 
    echo rtrim($line)."<br />"; 

는 첫 번째 예와 같은 문제가 발생하지 것이고, 라인의 끝에 모든 공간이 없어 질 것입니다 : 다음 코드를 사용하여.

13

폴 응답에는 올바른 접근 방법이 있지만 실수가 있습니다. 는 다음과 같은 인도 표준시 필요 :

file_put_contents($filename, trim($commentnumber).PHP_EOL, FILE_APPEND); 

PHP_EOL 상수는 Mac에서 끝나는 우측 라인을 사용해야합니다, Windows 및 UNIX 시스템 트림 함수는 문자열의 양쪽에있는 줄 바꿈 또는 공백을 제거합니다. 1. expecially에 있기 때문에 공백이나 특수 문자의 제로를 가진 끝낼 수 있기 때문에 는 정수로 변환하는 (그들은 ...에서 온 곳) 2. 식별자는 반드시 정수 할 필요가없는 큰 실수가 될 것

0

왜냐하면 파일에 쓸 때마다 파일이 끝나기 때문에 은 끝에 줄 바꿈을 추가합니다.

9

오, 얘들 아! 그냥 사용

\ 연구 \ n을 다음 그것을 추가하는 코드는, 그래서 확신하는 경우

\ n