Bonjour je cherche une expression regulires de l'expression suivante
elle commence par <?php echo gTrad(" et fini par ");?>
merci de m'aider svp.Code:
1
2"#^(<?php echo gTrad\(\"){1}[a-zA-Z0-9]{*}+\"{1}\) (?>\))$#";
Version imprimable
Bonjour je cherche une expression regulires de l'expression suivante
elle commence par <?php echo gTrad(" et fini par ");?>
merci de m'aider svp.Code:
1
2"#^(<?php echo gTrad\(\"){1}[a-zA-Z0-9]{*}+\"{1}\) (?>\))$#";
Vu qu'il s'agit de parser du code PHP, peut-être que l'utilisation du tokenizer serait plus adapté, exemple:Après, tout dépend de ce que tu cherches à en faire par la suite.Code:
1
2
3
4
5$str = '<?php echo gTrad(" et fini par ");?>'; $arr = token_get_all($str); print_r($arr);
Sinon, via regex, puisque tu recherches pratiquement un chaîne fixe mise à part la chaîne de caractère passée en argument de gTrad(), le plus pratique serait d'encadrer les parties fixes avec \Q et \E ce qui permet aux caractères spéciaux (ici, les parenthèses et les points d'interrogations) de ne pas être interprétés:Autre méthode, toujours en s'appuyant sur les parties fixes, mais cette fois-ci en utilisant strpos():Code:$pattern = '~\Q<?php echo gTrad("\E[^"]*\Q");?>\E~';
Le point faible de cette dernière méthode est qu'elle suppose qu'une sous-chaîne commençant par <?php echo gTrad(" va forcément s'achever par ");?> ce qui peut produire un résultat complètement faux si ce n'est pas le cas.Code:
1
2
3
4
5
6
7
8 $pos1 = strpos($str, '<?php echo gTrad("'); $pos2 = strpos($str, '");?>', $pos1+18); $result = substr($str, $pos1, $pos2 + 5); $param = substr($str, $pos1 + 18, $pos2 - $pos1 - 18); print_r($result); print_r($param);