>

텍스트 데이터와 변수 데이터 사이에 조건부 인 경우 행을 삭제하고 싶습니다

모든 사용자를 한 줄에 (1 2 1 3 1) 같은 사용자 이름을 가진 txt 데이터가 있습니다. "하나"사용자 이름을 제외한 모든 데이터를 삭제하고 싶습니다

내 코드;

if(file_get_contents('visitors.txt') != "one") {
    $GetLine = ;
    function removeLine ($url, $lineToRemove) 
    { 
        $data = file_get_contents($url); 
        $lines = explode(PHP_EOL, $data); 
        $lineNo = 1; 
        foreach($lines as $line) 
        { 
            $linesArray[$lineNo] = $line; 
            $lineNo++; 
        } 
        unset($linesArray[$lineToRemove]); 
        return implode("\n", $linesArray); 
    } 
    $data = removeLine ("username.txt", $getLine); 
    echo $data 
}

이 기능은 라인을 제거하는 데 사용됩니다.

내 문제는 data + $getLine 와 함께하는 것입니다.  한 단어 만있는 줄을 제외한 모든 줄을 제거하고 싶습니다.

  • 답변 # 1

    정규 표현식으로 간단히 수행 할 수 있습니다 :

    $file = preg_grep('#one#', file('file.txt'));
    
    

    이것은 $file 를 만들 것입니다  문자열 "one"을 포함하는 행만 보유하는 배열 배열을 다시 문자열로 바꾸려면 implode  

    "one"을 포함하는 줄만 에코하려면 반복자를 사용할 수도 있습니다 :

    $file = new RegexIterator(new SplFileObject("file.txt"), '#one#');
    foreach ($file as $content) {
        echo $content, PHP_EOL;
    }
    
    

    이것은 파일을 한 줄씩 넘어 가고 그 안에 문자열이 하나있는 줄을 에코합니다. 이점은 두 개의 배열을 중간 구조로 사용하지 않는다는 것입니다.

  • 답변 # 2

    참고로 if 문 안에 함수를 정의하면 안됩니다.

    또한, 내가 오해하지 않는 한, 줄 번호조차 필요하지 않습니다.

    function remove_line( $data, $remove ){
        $lines     = explode( PHP_EOL, $data ); // Convert to Array
        $new_lines = ''; // Start a new variable we'll add to in a loop
        foreach( $lines as $line ){
            $line = trim( $line ); // Trim Whitespace
            if( $line != $remove ){
                // Line isn't a line we want removed, so save it plus an EOL
                $new_lines .= $line.PHP_EOL;
            }
        }
        return $new_lines;
    }
    
    

    이제 다음과 같이 파일을로드하면 : $file = file_get_contents( 'my-file.txt' );  다음을 포함합니다 :

    One
    Two
    One
    Three
    One
    
    

    일단 당신이 remove_line 를 통해 그것을 실행  기능을 사용하면 다음과 같은 결과가 발생합니다.

    $file     = file_get_contents( 'my-file.txt' );
    $new_file = remove_line( $file, 'One' );
    var_dump( $new_file ); // Returns: string(10) "Two Three "
    
    

  • 이전 javascript - reduxpropsreducer가 정의되지 않은 이유는 무엇입니까?
  • 다음 amazon web services - dynamo db 테이블에 Aws Iot MQTT 메시지를 보내는 방법은 무엇입니까?