このコードを使用して、別のutf-8文字列で1つのutf-8文字列を検索します。
if (strlen(mb_stristr($string1, $string2)) > 0)
しかし、それは常に0を返します!誰かがこの問題のより良い解決策を知っていますか?両方の文字列は、Unicode文字と非Unicode文字の組み合わせである可能性があります。
mb_striposを使用しないのはなぜですか?
ソースエンコーディングがわからない場合は、mb_detect_encodingを使用し、続いてmb_convert_encodingを使用して各文字列を共通のエンコーディングに変換する必要がありますが、これはかなり簡単なことです。
とはいえ、string2がstring1の先頭(つまり、位置0)で発生する場合は、falseをチェックする必要があります。)
すなわち:使用...
if (mb_stripos($string1, $string2) !== false) {
// $string2 was found within $string1
...
}
部分文字列を使用していない場合は、strstr
(またはその派生語)を使用しないでください。気になるのは文字列が存在することだけなので、次を使用しますmb_stripos
。
if (mb_stripos($string1, $string2) !== false) {
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";
タイプセーフ比較演算子に注意してください!==
。