2009-12-18 8 views
1

J'essaie de trouver l'expression régulière propre à convertir eregi($1,$2) à preg_match("/$1/i",$2)regex: la conversion du code php de eregi à preg_match

je dois considérer s'il y aura des fonctions avec() en elle, et ils peuvent apparaître plus d'une fois. quelqu'un peut-il s'il vous plaît fournir l'expression régulière appropriée pour le faire?

grâce

+1

Je doute que nous puissions vraiment beaucoup aider sans voir d'abord quelques exemples. De ce que cela ressemble, un analyseur est plus adapté à cette tâche, mais peut-être avez-vous des raisons pour vouloir le faire avec des expressions régulières. Cependant, je doute que ce sera un remplacement simple, malheureusement. – Dustin

Répondre

1

Vous ne voulez pas utiliser une expression régulière pour analyser le code.

Vous souhaitez utiliser un analyseur.

+0

Cela ne me dérange pas d'utiliser un analyseur, je veux juste trouver un moyen de remplacer une fonction par une autre dans mon code. quel genre de parser je peux utiliser et comment? – ufk

+0

ok .. donc php comme une extension de tokenizer qui convertit le code php en jetons et de ce que je peux convertir en code. merci – ufk

1

Essayez-vous de modifier votre code source, puisque eregi est deprecated? Cette regex fera l'affaire:

$source= <<<STR 
eregi(\$1, \$2); 
eregi('hello', 'world'); 
STR; 

$source2= preg_replace("/eregi\(['\"]*([^\'\"),]+)['\"]*,\s*['\"]*([^'\"),]+)['\"]*\)/", 'preg_match("/$1/i", "$2")', $source); 

var_dump($source2); 
+0

malheureusement cette regex ne fonctionne pas pour la ligne de code suivante: 'if (! eregi ('Windows 9', php_uname())) {' – ufk