57

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

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

4 に答える 4

118

あなたが探していますstripos()

それが利用できない場合は、strtolower()最初に両方の文字列を呼び出してください。

編集

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)

于 2011-07-22T19:58:05.357 に答える
13

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

stripos()では大文字と小文字は区別されません。

于 2011-07-22T19:58:50.867 に答える
1

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

if(stripos($product->name, $searchterm) !== false){ //'i' case insensitive
        echo "Match = ".$product->link."<br />;
    }
于 2013-03-28T22:44:42.800 に答える
1

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

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

if(strpos($haystack, $needle) !== false){  
    echo "Match = ".$product->link."<br />;
}
于 2016-01-08T13:44:52.073 に答える