2010-06-29 4 views
1

J'ai besoin de porter quelques expressions régulières simples eregi à preg_match pour compiler PHP 5.3/6.0.Besoin d'aide avec certaines expressions régulières en PHP

Depuis que je ne suis pas trop confiant dans mes compétences d'expression régulière portage j'ai besoin d'aide ...

# 1

Ancienne version:

if(eregi('foo',$myVar)) { 
    $aresult = explode('/',stristr($myVar,'foo')); 
    $aversion = explode(' ',$aresult[1]); 
} 

Nouvelle version:

if(preg_match('/Foo\/([^ ]*)/i',$myVar,$matches)) { 
    $aversion = $matches[1]; 
} 

# 2

Ancienne version:

if(eregi('bar',$myVar) && ! eregi('rv:[0-9]\.[0-9]\.[0-9]',$myVar)) { 
    $aresult = explode('/',stristr($myVar,'bar')); 
    $aversion = explode(' ',$aresult[1]); 
} 

Nouvelle version:

//Not done yet need help 

Répondre

1

Votre deuxième extrait est à peu près la même chose que le premier, juste avec cette condition supplémentaire. Je vais deviner que votre code actuel (ou comment vous voulez qu'il fonctionne) est un peu différent de celui présenté? Si oui, pourriez-vous élaborer sur ces différences s'il vous plaît?

De toute façon, votre # 2 pourrait ressembler à # 1.

if (preg_match('~bar/([^ ]*)~i', $myVar, $match) && ! preg_match('/rv:[0-9]\.[0-9]\.[0-9]/', $myVar)) { 
    $aversion = $match[1]; 
} 

L'utilisation de ~ comme delimiters peut sembler étrange; le raisonnement étant que l'expression régulière contient le caractère de délimitation le plus habituel (/) donc une alternative est utilisée au lieu d'échapper à la barre oblique comme vous l'avez fait dans la question.

+0

# 1 et # 2 sont des problèmes différents (mais similaires). J'ai déjà porté le # 1, mais je ne suis pas sûr de ma mise en œuvre. Pour # 2, j'aurai besoin d'aide pour le faire. – AlexV

+0

Ma réponse actuelle vous traduit # 2 dans un extrait de 'preg_match' utilisant un # 1 (ce qui est bien). Si vous avez une question spécifique, un problème ou une tâche que vous souhaitez résoudre, veuillez élaborer. En l'état, j'ai fait ce que vous semblez demander. – salathe

+0

Juste une question dans votre réponse, je peux mettre "barre" dans tous les cas (Bar, BAR, bAr ...) et il va correspondre (par exemple ~ i)? – AlexV