web-dev-qa-db-ja.com

strposの大文字と小文字を区別しない方法

大文字と小文字を区別しないようにstrposを変更するにはどうすればよいですか。その理由は、product->nameMadBikeで、検索語はbikeです。リンクはエコーされません。私の主な関心事は、コードの速度です。

<?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

探しているのは 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)を返す必要があります。

96
Dereleased

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

stripos()は大文字と小文字を区別しません。

10
Turnsole

名前と$ searchtermの両方を$ strposの前に小文字にします。

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

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

'i' in stripos()は大文字と小文字を区別しないことを意味します

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