0

このコードを使用して、別のutf-8文字列で1つのutf-8文字列を検索します。

if (strlen(mb_stristr($string1, $string2)) > 0)

しかし、それは常に0を返します!誰かがこの問題のより良い解決策を知っていますか?両方の文字列は、Unicode文字と非Unicode文字の組み合わせである可能性があります。

4

3 に答える 3

3

mb_striposを使用しないのはなぜですか?

ソースエンコーディングがわからない場合は、mb_detect_encodingを使用し、続いてmb_convert_encodingを使用して各文字列を共通のエンコーディングに変換する必要がありますが、これはかなり簡単なことです。

とはいえ、string2がstring1の先頭(つまり、位置0)で発生する場合は、falseをチェックする必要があります。)

すなわち:使用...

if (mb_stripos($string1, $string2) !== false) {
    // $string2 was found within $string1
    ...
}
于 2010-12-13T13:43:30.510 に答える
1

部分文字列を使用していない場合は、strstr(またはその派生語)を使用しないでください。気になるのは文字列が存在することだけなので、次を使用しますmb_stripos

if (mb_stripos($string1, $string2) !== false) {
于 2010-12-13T13:44:55.913 に答える
0
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";

タイプセーフ比較演算子に注意してください!==

于 2010-12-13T13:43:04.940 に答える