2010-12-02 8 views
2

PHP a une fonction strpos() pour trouver la position de la première instance d'une valeur donnée dans une chaîne. Y at-il un moyen de le faire avec une aiguille qui est un tableau de chaînes? Il donnerait la première occurence:Trouver la première occurrence d'un tableau de chaînes dans une chaîne

$str = '1st and 3rd'; 

str_array_pos($str, array('st', 'nd', 'rd', 'th')) //would return 1 because of 'st' 
+0

Vous pouvez 'foreach' sur la Aiguisez le tableau, faites le 'strpos()' et enregistrez les résultats dans un tableau. Vous cherchez le 'min()' de tous les résultats. – svens

Répondre

3

Vous pouvez écrire vous-même:

function str_array_pos($string, $array) { 
    for ($i = 0, $n = count($array); $i < $n; $i++) 
    if (($pos = strpos($string, $array[$i])) !== false) 
     return $pos; 
    return false; 
} 

Par ailleurs, la valeur de retour dans votre exemple doit être 0 et non 1 puisque les indices de tableau commencent à 0.

+1

Cela ne retourne pas toujours la position de la première occurrence de l'une des chaînes d'aiguilles. – svens

+0

@svens: Correction. :) – casablanca

+0

merci beaucoup! – babonk

0

array_search() le fera, test avec ===false.

+2

Ceci fait une comparaison complète; cela ne fonctionne pas pour les sous-chaînes. – casablanca

+0

À la réflexion, je ne pense pas que cela fonctionnera pour votre situation. @ Casablanca - remarqué juste quand vous étiez en train de commenter, le vôtre est certainement la bonne façon, avoir un +1. – Ben

Questions connexes