par
Yetaland » 04 déc. 2013, 14:01
Bonjour à tous,
je bute actuellement sur un problème de regex:
Voici un bout de mon texte que je veux tester:
'IFNULL(visit.date,NOW())'
Pour pouvoir récupérer 'visit.date' et 'NOW()' (qui sont en fait ajouté à la requête dynamiquement; il peut y avoir tout autre chose à la place).
Voici le regex que j'ai utilisé:
$sql = preg_replace_callback(
'/IFNULL\((.+?),(.+?)\)/is',
function ($matches){
//
},
$sql);
Le problème est que ce pattern s'arrête dès la première parenthèse fermante qu'il trouve, ce qui n'est pas bon.
J'aimerais savoir comment faire pour omettre toutes les parenthèses contenu dans la parenthèse principale, sachant qu'il peut y avoir X niveaux de sous parenthèses ?
J'ai trouvé le pattern récursif sur google
'IFNULL\(((?>[^()]+)|(?R))*\)'
mais je ne sais pas si ça va faire exactement ce que je recherche et comment l'utiliser dans mon cas.
Auriez-vous une idée ?