6
votes

Trouver si la soustrine existe dans une chaîne

J'ai beaucoup de chaînes et j'ai besoin de vérifier si chacun d'entre eux contient une couleur.

Par exemple:

  • Un oiseau dans le ciel
  • 22 rue de la France
  • Le chien est bleu
  • Le chat est noir et blanc

    Donc, les deux dernières chaînes doivent revenir.

    Quelle est la meilleure façon de le trouver?

    regex ou vérifier avec n'importe quel substrateur ()?


0 commentaires

4 Réponses :


1
votes

Strows ou Strripos in PHP doit être en mesure de rechercher un seul mot dans une chaîne. Vous devrez peut-être avoir une boucle pour rechercher toutes les couleurs si vous l'utilisez si


1 commentaires

a également vu un exemple quelque part sur Eregi Eregi ("(ceci | que)", $ str) // trouve ceci ou ça en $ str



26
votes

Je travaille toujours avec Stros code> car il semble être l'alternative la plus rapide (je ne sais pas à propos de Regex).

if(strpos($haystack, $needle) !== FALSE) return $haystack;


4 commentaires

J'ai trouvé une fonction Utiliser des Strows, avec un tableau de $ aiguilles


Strows ne retourne pas vrai, mais cela retourne false afin que vous puissiez faire si (Strows ($ haystack, $ aiguille)! == false) retour $ foin; et une autre chose à retenir est si vous étiez Vous recherchez rouge alors Fred renvoie également un résultat.


@Pathfinder Vous avez absolument raison, on dirait que je ne faisais pas attention :) Merci de le pointer.


Ceci est plus rapide que Regex. Aussi méfiez-vous que si Stros est affaire sensible. Si vous devez rechercher la sous-chaîne, quelle que soit votre cas, vous devez utiliser stripos



8
votes

Dans Regexp, vous pouvez écrire

preg_match_all("/(red|blue|black|white|etc)/", $haystack, $matches);

print_r($matches);


0 commentaires

3
votes

Si vous utilisez Strows, il renvoie une position d'une chaîne qu'il retournera un nombre 1,2,3 etc. et non true ou faux.

Et l'autre problème est si une chaîne existe au début, il retournera 0 qui considérera comme des faux alors Stros ne peut pas trouver ce mot.


1 commentaires

Il suffit d'utiliser === Opérateur