Я не совсем уверен, что вы спрашиваете, но в PHP вы можете использовать preg_match_all
.Он даже работает с символами новой строки, поэтому вам не нужно заменять их на {newline}
.
Предполагая, что регулярное выражение выполнено:
<?php
$file = $argv[1];
$rgx="/(?=(Booked|Cancelled|Reschedule))(?<status>\1)|(?<acct>M\d{9})|(?=Procedure Date:\s*(?<m>\d{2})\/(?<d>\d{2})\/(?<y>\d{2}))/";
$fp = fopen($file, "r");
$data = fread($fp, filesize($file));
fclose($fp);
preg_match_all($rgx, $data, $array);
var_dump($array);
Я сохранил код как test.php
и подтвердил это следующим образом.
$ php test.php txt_newline.txt > test.a
$ php test.php txt_no_newline.txt > test.b
$ md5sum test.a test.b
5880b9977830066f5b8bd0bea41ebb0f test.a
5880b9977830066f5b8bd0bea41ebb0f test.b
Надеюсь, это поможет. Вот полное руководство по preg_match_all
.