I have this RegEx from my previous question. The problem is that sometimes it works, Sometimes it doesn't. I tried pasting it on an online simulator and got this: https://regex101.com/r/I3tnY4/3
The text is from a file I read using
file_get_contents
The contents of the file are complete but when I run it through the RegEx to filter it:
$data = file_get_contents($var);
$pat = '/intervals \[\d+\]:\s+\Kxmin = (?P<xmin>\d+(\.\d+)?) \
\s+xmax = (?P<xmax>\d+(\.\d+)?)\s+text = "(?P<text>[^"]*)"/m';
// print_r($data);
preg_match_all($pat, $data, $m);
$result = array_map(function($a){
return array_combine(['xmin', 'xmax', 'text'], $a);
}, array_map(null, $m['xmin'], $m['xmax'], $m['text']));
print_r($result);
it returns an empty array. At first, it was working but when I added a for loop to handle multiple file upload it stopped working.
This also happened before when I tried to process the file right after it was uploaded.
Like this:
if (move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], $target_file)) {
if (file_exists($target_file)) {
$data = file_get_contents($target_file);
$pat = '/intervals \[\d+\]:\s+\Kxmin = (?P<xmin>\d+(\.\d+)?) \
\s+xmax = (?P<xmax>\d+(\.\d+)?)\s+text = "(?P<text>[^"]*)"/m';
preg_match_all($pat, $data, $m);
$result = array_map(function($a){
return array_combine(['xmin', 'xmax', 'text'], $a);
}, array_map(null, $m['xmin'], $m['xmax'], $m['text']));
print_r($result);
}
}
With the above code, the RegEx also failed since the $result array was empty. I figured that was because the file was not yet ready to be read or something. Even though when I printed the contents of the file everything was there. So what I did then was to redirect my page to another file that did the RegEx processing and surprisingly it worked there.