55 votes

Comment rendre strpos insensible à la casse

Comment puis-je changer les strpos pour les rendre non sensibles à la casse. La raison en est que si le product->name est MadBike et que le terme de recherche est bike, le lien ne me fera pas écho. Ma principale préoccupation est la vitesse du code.

 <?php
$xml  = simplexml_load_file('test.xml');
$searchterm = "bike";
foreach ($xml->product as $product) {
if (strpos($product->name, $searchterm) !== false ) {
echo $product->link;
} }
?>

115voto

Dereleased Points 6187

Vous recherchez stripos()

Si ce n'est pas le cas, appelez d'abord strtolower() sur les deux chaînes.

EDIT :

stripos() ne fonctionnera pas si vous voulez trouver une sous-chaîne avec un signe diacritique.

Par exemple:

stripos("Lezy Jerzy na wiezy i nie wierzy, ze na wiezy lezy duzo JEZY","jezy"); renvoie false , mais il devrait renvoyer int(68) .

13voto

Turnsole Points 1586

http://www.php.net/manual/en/function.stripos.php

stripos() n'est pas sensible à la casse.

1voto

user1483887 Points 11

mettre à la fois nom et $searchterm en minuscules avant $strpos.

 $haystack = strtolower($product->name);
$needle = strtolower($searchterm);

if(strpos($haystack, $needle) !== false){  
    echo "Match = ".$product->link."<br />;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X