2011-02-28 1 views
1

Je suis un débutant à php. Y at-il une fonction qui peut correspondre à un modèle dans une chaîne donnée et retourner l'index du début du modèle dans cette chaîne? par exemple: si $pattern = '/abcd/', $string = 'weruhfabcdwuir' alors la fonction devrait revenir 6 depuis le 6 commence indice de 'abcd' dans $stringComment trouver la position d'un motif dans une chaîne en utilisant PHP?

Répondre

3

Si vous essayez de correspondre à un modèle de regexp (pas une chaîne droite), strpos() ne vous aidera pas. Au lieu de cela, utilisez preg_match() (si vous voulez seulement correspondre à la première occurrence) ou preg_match_all() (si vous voulez faire correspondre toutes les occurrences) et le drapeau PREG_OFFSET_CAPTURE:

$pattern = '/abcd/'; 
$string = 'weruhfabcdwuir'; 

preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE); 

// $matches[0][0][1] == 6, see PHP.net for structure of $matches 
print_r($matches); 

Exemple avec plus d'un match à l'aide preg_match_all():

$pattern = '/abcd/'; 
$string = 'weruhfabcdwuirweruhfabcdwuir'; 

preg_match_all($pattern, $string, $matches, PREG_OFFSET_CAPTURE); 

// $matches[0][0][1] == 6 
// $matches[0][1][1] == 20 
print_r($matches); 
Questions connexes