Say we have the following string:
Terminator1 Terminator2 Terminator3: Terminator4
And the given regex which only saves Terminator3
(\w+)(?=:)
How I must save the first 3 Terminators in a string, because the php's preg_match offers to save results only as array? I'm thinking to use implode()
as the only option for gluing all words ...
Example result:
var_dump($terminators);
array(3) {
[0]=>
string(11) "Terminator1"
[1]=>
string(11) "Terminator2"
[2]=>
string(11) "Terminator3"
}
Thanks in advance
I don't think I'd use regex for this task (unless you have a special requirement) because there are faster single-function non-regex methods available.
Code: (Demo)
$input='Terminator1 Terminator2 Terminator3: Terminator4';
//$input='Terminator1 Terminator2 Terminator3 Terminator4'; // no delimiter
echo "strstr: ";
var_export(strstr($input,':',true)); // false when no delimiter is found
echo "\n\n";
echo "strtok: ";
var_export(strtok($input,':')); // fullstring when no delimiter is found
echo "\n\n";
echo "explode: ";
var_export(explode(':',$input,2)[0]); // fullstring when no delimiter is found
echo "\n\n";
echo "preg_replace: ";
var_export(preg_replace('/:.*/','',$input)); // fullstring when no delimiter is found
echo "\n\n";
echo "preg_match: ";
var_export(preg_match('/[^:]*/',$input,$out)?$out[0]:'error'); // fullstring when no delimiter is found
echo "\n\n";
echo "preg_split: ";
var_export(preg_split('/:.*/',$input)[0]); // fullstring when no delimiter is found
Output:
strstr: 'Terminator1 Terminator2 Terminator3'
strtok: 'Terminator1 Terminator2 Terminator3'
explode: 'Terminator1 Terminator2 Terminator3'
preg_replace: 'Terminator1 Terminator2 Terminator3'
preg_match: 'Terminator1 Terminator2 Terminator3'
preg_split: 'Terminator1 Terminator2 Terminator3'