>  기사  >  백엔드 개발  >  단어를 기반으로 텍스트 파일의 특정 줄을 어떻게 바꿀 수 있습니까?

단어를 기반으로 텍스트 파일의 특정 줄을 어떻게 바꿀 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-16 06:57:02696검색

How Can I Replace a Specific Line in a Text File Based on a Word?

단어를 기반으로 텍스트 파일의 특정 줄 바꾸기

텍스트 파일 조작에서 특정 줄을 바꿔야 하는 상황이 발생합니다. 특정 단어의 존재 여부를 기반으로 한 텍스트 줄이 중요해집니다. 이러한 필요성은 각기 다른 시나리오에 적합한 다양한 접근 방식을 사용하여 해결할 수 있습니다.

소형 파일 처리

메모리에 편안하게 들어갈 수 있는 작은 텍스트 파일의 경우 편리한 방법입니다. 전체 파일을 여러 줄의 배열로 읽는 작업이 포함됩니다. 그런 다음 이 배열은 사용자 정의된 함수를 사용하여 처리되어 지정된 단어가 포함된 줄을 효율적으로 대체할 수 있습니다.

다음은 PHP의 구현 예입니다.

$data = file('myfile'); // reads an array of lines
function replace_a_line($data) {
   if (stristr($data, 'certain word')) {
     return "replacement line!\n";
   }
   return $data;
}
$data = array_map('replace_a_line', $data);
file_put_contents('myfile', $data);

대용량 파일 처리

사용 가능한 메모리 제한을 초과하는 대용량 텍스트 파일의 경우 보다 효율적인 접근 방식이 필요합니다. 이 방법에는 파일을 한 줄씩 읽고 원하는 단어가 있는지 확인한 후 대체 파일에서 바꾸는 작업이 포함됩니다. 교체가 수행되면 수정된 내용으로 원본 파일을 덮어씁니다.

다음 PHP 구현을 고려하십시오.

$reading = fopen('myfile', 'r');
$writing = fopen('myfile.tmp', 'w');

$replaced = false;

while (!feof($reading)) {
  $line = fgets($reading);
  if (stristr($line,'certain word')) {
    $line = "replacement line!\n";
    $replaced = true;
  }
  fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced) 
{
  rename('myfile.tmp', 'myfile');
} else {
  unlink('myfile.tmp');
}

파일 크기 및 리소스 제약 조건에 따라 이러한 접근 방식은 효과적인 단어 존재 여부에 따라 텍스트 파일의 특정 줄을 바꾸는 솔루션입니다.

위 내용은 단어를 기반으로 텍스트 파일의 특정 줄을 어떻게 바꿀 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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