2016-12-15 4 views
0

comment je peux vérifier certaines chaînes avec regex dans certaines partieRegex au milieu d'une chaîne

Je veux joindre ces conditions.

if ($string == "form[new_search_param][1][searchParam]") {} 

et

if ($string == "form[new_search_param][2][searchParam]") {} 

à une sorte de ce

if ($string == "form[new_search_param][" . ^[0-9] . "[searchParam]") {} 

Je me demande si je peux utiliser regex dans la chaîne?

+1

oui. vous pouvez. vous êtes très proche de la solution, aussi. Maintenant, commencez simplement par utiliser une fonction regex au lieu de la comparaison de chaînes. –

Répondre

3

Si j'undestand correctement, vous cherchez quelque chose comme ceci:

if(preg_match('/form\[new_search_param\]\[[0-9]\]\[searchParam\]/', $string)) {} 

Les crochets doivent être échappés dans une expression régulière.

Note: Ce ne correspond pas à la chaîne:

form[new_search_param][10][searchParam] 

puisque vous êtes à la recherche d'un numéro exact. Pour accepter un ou plusieurs numéros écrivent:

if(preg_match('/form\[new_search_param\]\[[0-9]+\]\[searchParam\]/', $string)) {} 

suggestion supplémentaire:

if(preg_match('/^form\[new_search_param\]\[\d+\]\[searchParam\]$/', $string)) {} 

Cela ne correspondra pas à s'il y a du contenu supplémentaire avant ou derrière l'expression de recherche comme:

prefixedtext_form[new_search_param][10][searchParam]_suffixedtext 
2

Vous devez utiliser preg_match:

subject pour un match à l'expression régulière dans le modèle.

http://php.net/manual/en/function.preg-match.php

if(preg_match("/form\[new_search_param\]\[[0-9]\]\[searchParam\]/", $string)) { 
    // Your code 
} 
+1

La solution ci-dessus fonctionnera. Cependant, vous pouvez également utiliser '\ d' comme raccourci pour' [0-9] '. Si vous voulez des nombres supérieurs à 9, utilisez '\ d +' pour sélectionner un ou plusieurs chiffres. –