別のマルチバイト文字列で1つのマルチバイト文字列を検索します

StackOverflow https://stackoverflow.com/questions/4429332

  •  09-10-2019
  •  | 
  •  

質問

このコードを使用して、別の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";

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top