2013-08-27 4 views
1

Je suis en train de faire correspondre les variables d'un script, par exemple cette ligne:RegExp (preg_match) pour les variables

Hello World, this is a Test. $i = 1, $sString = "Test" 

Je veux obtenir $ i et $ sChaîne.

J'ai essayé de nombreux modèles différents, par ex. $pattern = '/(\$\w+)/';. Je reçois seulement $ i deux fois mais pas $ sString.

Comme vous pouvez le voir here.

+1

Utiliser 'preg_match_all' – Bora

+0

et retirez la capture entre parenthèses. –

Répondre

1

Vous obtenez un seul match $i. La raison pour laquelle il y a deux résultats est que les parenthèses capture le résultat et que la capture est renvoyée aussi bien (vous pouvez l'utiliser pour renvoyer des sous-requêtes, comme tout sauf le $). Pour obtenir tous les résultats, utilisez preg_match_all. Et supprimer les parenthèses si vous n'avez pas besoin eux (et vous ne les avez besoin si elles simplement envelopper toute expression):

preg_match_all('/[$]\w+/', $subject, $matches); 

Notez que le tableau qui en résulte est un niveau plus profond, vous trouverez votre tableau de correspondances dans $matches[0].

Demo