別のマルチバイト文字列で1つのマルチバイト文字列を検索します
質問
このコードを使用して、別のUTF-8文字列で1つのUTF-8文字列を検索します。
if (strlen(mb_stristr($string1, $string2)) > 0)
しかし、それは常に0を返します!この問題に対するより良い解決策を知っている人はいますか?両方の文字列は、Unicode文字と非ユニコード文字の組み合わせである可能性があります!
解決
サブストリングを使用していない場合は、使用しないでください strstr
(またはその派生物)。あなたが気にするのは、文字列が存在することです。 mb_stripos
:
if (mb_stripos($string1, $string2) !== false) {
他のヒント
使ってみませんか MB_STRIPOS?
ソースエンコーディングがわからない場合は、使用する必要がある場合があります MB_DETECT_ENCODING そしてその後 MB_CONVERT_ENCODING 各文字列を共通のエンコードに変換するには、これはかなり些細なことです。
とはいえ、String1の開始時(つまり、位置ゼロ)でstring2が発生した場合にfalseをチェックする必要があります。
IE:使用...
if (mb_stripos($string1, $string2) !== false) {
// $string2 was found within $string1
...
}
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";
タイプセーフ比較演算子に注意してください !==
.
所属していません StackOverflow