PHP结果数据溢出/爆炸,带有赋值

I am new to PHP and working to get some results but failing to achieve my target. I have text file which contains data like this,

APAC|AU|enable|SYD1925|8|20150929|WORKING
APAC|AU|disable|ADL7235|3|20120123|RESIGNED
APAC|NZ|disable|NZ1356|6|20110123|RESIGNED
APAC|NZ|enable|NZ1356|3|20130123|WORKING

I am trying to search "AU" && "enable" for this text, line by line and I am a bit successful in it. Here is my Code example;

public function scan1()
{
    $file = FCPATH.'uploads/example.txt';
    // the following line prevents the browser from parsing this as HTML.
    header('Content-Type: text/plain');
    $search1 = "AU"; 
    $search2 = "enable";
    $lines = file($file); 
    foreach($lines as $line) 
    { 
        if(stristr($line,$search1) && stristr($line,$search2))
            echo $line;
    } 
}

Now, I am trying to explode/split output data and assign variable / array to save in database but I am failing to do so, can someone please help or give me some direction to achieve this. Thank you

Please show us your_table scheme. If '$db' is a handle of the db connection :

foreach($lines as $line) 
{ 
    if(stristr($line,$search1) && stristr($line,$search2))
    {
        $arr = explode("|", $line);
        $query = "INSERT INTO your_table VALUES ('".$arr[0]."', '".$arr[1]."', '".$arr[2]."', '".$arr[3]."', '".$arr[4]."', '".$arr[5]."')";
        $db->query($query);
    }
} 

First, obtain the file contents with file_get_contents:

$str = file_get_contents(FCPATH.'uploads/example.txt');

Then, use the regex (preg_match_all) to find all portion of text you're looking for:

preg_match_all("/APAC\\|(\w{2}\\|\w+)/", $str, $matches);

Then adapt the array so the 'AU' and 'enabled' are separated (array_map, explode):

$matches = array_map(function ($v) { return explode('|', $v); }, $matches[1]);

So, print_r($matches); returns:

Array
(
    [0] => Array
        (
            [0] => AU
            [1] => enable
        )

    [1] => Array
        (
            [0] => AU
            [1] => disable
        )

    [2] => Array
        (
            [0] => NZ
            [1] => disable
        )

    [3] => Array
        (
            [0] => NZ
            [1] => enable
        )

)

Finally, the foreach loop:

foreach($matches as $k => $kv)
{
    $search1 = $kv[0]; // AU
    $search2 = $kv[1]; // enabled
}

This works as expected:

public function scan1()
{
    $file = FCPATH.'uploads/example.txt';
    // the following line prevents the browser from parsing this as HTML.
    header('Content-Type: text/plain');
    $search1 = "AU"; 
    $search2 = "enable";
    $lines = file($file); 
    foreach($lines as $line) 
    { 
        if(strpos($line,$search1) !== false && strpos($line,$search2) !== false)
            echo $line;
    } 
}

using strpos function for detection.