Remove Line using PHP Regexp

Discussion in 'PHP' started by khairulanuarmm, Dec 8, 2007.

  1. #1
    How to use regexp to remove line from text file that not containing certain symbol such as equal sign =?
     
    khairulanuarmm, Dec 8, 2007 IP
  2. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #2
    
    $text = preg_replace('~(^|[\r\n]+)(?!.*=).*([\r\n]+|$)~', "\n", trim($text));
    
    PHP:
     
    nico_swd, Dec 8, 2007 IP
  3. khairulanuarmm

    khairulanuarmm Peon

    Messages:
    10
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    I tried the code something like this:
    Input File
    ---------
    abc=123
    def=345
    php is good
    i like it
    parm=567
    hello2

    Php Code:
    <?php
    $myFile = "report2a.txt";
    $fh = fopen($myFile, 'r');
    $out="";
    while ($data_in = fgets($fh)){
    $data_in=preg_replace('~(^|[\r\n]+)(?!.*=).*([\r\n]+|$)~', "\n", trim($data_in));
    $out.=$data_in;
    }
    file_put_contents("report2b.txt",$out);
    fclose($fh);
    echo "done";
    ?>

    Output generated report2b.txt:
    abc=123def=345

    parm=567

    Look likes carriage return has been truncated or trimmed. Could you fix it to become proper output:
    abc=123
    def=345
    parm=567


    Thanks. for your help.
     
    khairulanuarmm, Dec 9, 2007 IP
  4. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #4
    
    $myFile = "report2a.txt";
    
    $lines = file($myFile);
    // Remove lines that don't have an equal sign
    $lines = array_filter($lines, 'is_valid_line');
    // Save
    file_put_contents($myFile, implode("\n", $lines));
    
    echo "Done";
    
    function is_valid_line(&$line)
    {
    	return (strpos($line = trim($line), '=') !== false);
    }
    
    PHP:
     
    nico_swd, Dec 10, 2007 IP
  5. khairulanuarmm

    khairulanuarmm Peon

    Messages:
    10
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Now okay. Thankx
     
    khairulanuarmm, Dec 11, 2007 IP