大文字と小文字を区別しないようにstrposを変更するにはどうすればよいですか。その理由は、product->name
はMadBikeで、検索語はbikeです。リンクはエコーされません。私の主な関心事は、コードの速度です。
<?php
$xml = simplexml_load_file('test.xml');
$searchterm = "bike";
foreach ($xml->product as $product) {
if (strpos($product->name, $searchterm) !== false ) {
echo $product->link;
} }
?>
探しているのは stripos()
それが利用できない場合は、最初に両方の文字列で strtolower()
を呼び出すだけです。
[〜#〜] edit [〜#〜]:
stripos()
は、発音区別符号付きの部分文字列を検索する場合は機能しません。
例えば:
stripos("Leży Jerzy na wieży i nie wierzy, że na wieży leży dużo JEŻY","jeży");
はfalse
を返しますが、int(68)
を返す必要があります。
http://www.php.net/manual/en/function.stripos.php
stripos()は大文字と小文字を区別しません。
名前と$ searchtermの両方を$ strposの前に小文字にします。
$haystack = strtolower($product->name);
$needle = strtolower($searchterm);
if(strpos($haystack, $needle) !== false){
echo "Match = ".$product->link."<br />;
}
'i' in stripos()は大文字と小文字を区別しないことを意味します
if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive
echo "Match = ".$product->link."<br />;
}