J'ai besoin d'aide pour modifier l'expression rationnelle qui est utilisée comme modèle dans preg_match pour prendre en compte les deux types de chaînes, une avec le nom de famille et une sans le nom de famille.Comment comptabiliser deux types de chaînes différents lors de l'utilisation de preg_match?
$string = "Tim Johnson (M) - 12/19/2001 (14 years)";
$re = '~^(?<fname>[\p{L}-]+)\h+(?<lname>[\p{L}\h-]+?)\h+\((?<gender>[MF])\)[-\h]+(?<dob>[\d/]+)~mu';
preg_match($re, $string, $matches);
retourne un tableau de:
array(
'fname' => 'Tim',
'lname' => 'Johnson',
'gender' => 'M',
'dob' => '12/29/2001',
)
Mais si la chaîne est (manque le nom de famille):
$string = "Tim (M) - 12/19/2001 (14 years)";
Il retourne un tableau de:
array(
'fname' => '',
'lname' => '',
'gender' => 'M',
'dob' => '',
)
Utiliser un groupe optionnel de non-capture autour de