7
votes

Trouver une chaîne exacte à l'intérieur d'une chaîne

J'ai deux cordes "mures" et "maramures". Comment puis-je créer une fonction de recherche que lorsque quelqu'un recherche des maturations, il ne lui retournera que les messages contenant le mot "Mures" et non celui qui contient le mot "Maramures". J'ai essayé Strstr jusqu'à maintenant mais ça marche maintenant.


2 commentaires

Est-ce sensible à la casse? Sont mures et mures identique?


Vous devrez écrire du code pour créer la fonction de recherche. php.net


7 Réponses :


1
votes

Comment vérifiez-vous le résultat de Strstr? Essayez ici:

$string = 'Maramures';
$search = 'Mures';
$contains = strstr(strtolower($string), strtolower($search)) !== false;


0 commentaires

19
votes

Vous pouvez le faire avec regex et entourer le mot avec \ b limite de mot

preg_match ("~ \ bmures \ b ~", $ string)

Exemple: xxx


1 commentaires

Je suis bloqué en voyant que vous utilisez ~ au lieu de / . Mais j'ai trouvé: "Les délimiteurs utilisés souvent sont des barres obliques / , des signes de hachage # et tildes ~ ". Toutes les méthodes sont valables pour les modèles délimités. J'ai juste besoin d'utiliser aucun paramètre sensible en ajoutant i à la fin: preg_match ("~ \ bmures \ b \ b ~ i", $ string)



0
votes

Peut-être que c'est une solution stupide et il y a un meilleur. Mais vous pouvez ajouter des espaces aux chaînes de source et de destination au début et à la fin des chaînes, puis de rechercher des "mures". Facile à mettre en œuvre et pas besoin d'utiliser d'autres fonctions :)


0 commentaires

6
votes

Utiliser la fonction Preg_Match

if (preg_match("/\bMures\b/i", $string)) {
    echo "OK.";
} else {
    echo "KO.";
}


0 commentaires

0
votes

Vous pouvez faire diverses choses:

  • Recherchez 'Mures' (Espaces autour)
  • Rechercher la casse sensible (SO 'Mures' se trouve dans "Maramures" mais "Mures" ne sera pas)
  • Utilisez une expression régulière à rechercher dans la chaîne («Mot-limite de Word + Mures + Word Boundary») - Regardez-la aussi: PHP Trouver une chaîne avec regex

0 commentaires

0
votes
function containsString($needle, $tag_array){
    foreach($tag_array as $tag){
        if(strpos($tag,$needle) !== False){
            echo $tag . " contains the string " . $needle . "<br />";
        } else {        
            echo $tag . " does not contain the string " . $needle;
        }

    }
}
$tag_array = ['Mures','Maramures'];
$needle    = 'Mures';
containsString($needle, $tag_array);
A function like this would work... Might not be as sexy as preg_match though.

0 commentaires

0
votes

La manière très simple devrait être similaire à celle-ci. xxx


0 commentaires