web-dev-qa-db-fra.com

Comment rendre la strpos insensible à la casse

Comment puis-je changer la strpos pour la rendre non sensible à la casse. La raison en est que si le product->name est MadBike et le terme de recherche est bike il ne me fera pas écho le lien. 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;
} }
?>
43
EnexoOnoma

Vous recherchez stripos()

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

[~ # ~] éditez [~ # ~] :

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

Par exemple:

stripos("Leży Jerzy na wieży i nie wierzy, że na wieży leży dużo JEŻY","jeży"); renvoie false, mais il doit renvoyer int(68).

96
Dereleased

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

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

10
Turnsole

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

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

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

'i' in stripos () signifie insensible à la casse

if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive
        echo "Match = ".$product->link."<br />;
    }
1
KDawg