2012-11-22 3 views
3

안녕하세요 이것은 내가 특정 문자에 도달 할 때까지 파일에서 읽은 다음 php로 그 특정 문자 앞에 새로운 줄에 문자열을 쓰고 싶습니다. 하면 fopen으로 읽는 방법을 나는 또한 (그 전에 라인에 내 문자열을 삽입)이 예에서 봐 내가 마지막 부분을 잘 모릅니다 라인으로 라인을 읽는 방법을 알고 알고하십시오 myfile을 함유하고 있음 : 그래서파일을 읽을 때까지 char에 도달 할 때까지 PHP로 작성하기

Hello 
How are You 
blab la 
... 
#$?! 
other parts of my file... 

내가 $에 도달했을 때 그것을 원한다는 것을 아는가?! 내 문자열을 내가 그랬다고 가정하기 전에 줄에 넣어 라!

이제 myfile을 함유하고 있음 :
Hello 
How are You 
blab la 
... 
#I did it! 
#$?! 
other parts of my file... 

내가이 작업을 수행하는 방법을

?!? 내가 지금까지했던 어떤 :

$handle = @fopen("Test2.txt", "r"); 
if ($handle) 
{ 
while (($buffer = fgets($handle, 4096)) !== false) 
{ 
    if($buffer == "#?") echo $buffer; 
} 
if (!feof($handle)) { 
    echo "Error: unexpected fgets() fail\n"; 
} 
fclose($handle); 
} 

답변

1

텍스트를 읽을 때 간단히 $?!을 검색해야합니다.

한 줄씩 읽으면서 각 줄에서 확인하십시오.

개인적으로 나는 전체 파일을 한 번에 (너무 커서는 안된다고 가정하고) 문자열을 vlaue로 교체해야합니다.

$needle = '$?!'; // or whatever string you want to search for 
$valueToInsert = "I did it!"; // Add \r\n if you need a new line 

$filecontents = file_get_contents("Test2.txt"); // Read the whole file into string 
$output = str_replace($needle, $valueToInsert . $needle, $filecontents); 

echo $output; // show the result 

위 코드는 테스트하지 않았으므로 미세 조정이 필요할 수 있습니다.

+0

고맙습니다.하지만 코드에 이해할 수없는 문제가 있습니다. 파일에 들어가고 출력을 반향 출력 할 때 입력 (/ n)이 없을 때 어떻게 처리해야합니까? –

+0

아니, 그냥 출력하지 않습니다 echo/n으로 작동합니다 정말 고마워! –

0

당신이 당신의 마커를 알고 있기 때문에, 당신은 fseek의 사용 바이트 수를 다시 되감기 할 수있는 데이터를 삽입 할 fwrite을 사용하여 다음과 (SEEK_CUR 변위 할 어디서 설정)?

뭔가 같은 :

$handle = @fopen("Test2.txt", "r"); 
if ($handle) 
{ 
    while (($buffer = fgets($handle, 4096)) !== false) 
    { 
     if($buffer == "#?") { 
      fseek($handle, -2, SEEK_CUR); // move back to before the '#?' 
      fwrite($handle, 'I did it!'); 
      break; // quit the loop 
     } 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 

면책 조항 : 아마도 이상적인 것은 아니지만 (필자는 위의 그래서 당신은 정확히 작업을 얻을 수에 대한 재생해야 시도하지했지만, 그것은 가능한 해결책처럼 보인다 하나!)

관련 문제