Suchen Sie nach einem Multibyte-String in einem anderen Multibyte-String
Frage
verwende ich diesen Code für ein utf-8-String in einem anderen utf-8-String suchen:
if (strlen(mb_stristr($string1, $string2)) > 0)
, aber es gibt immer 0! Kennt jemand eine bessere Lösung für dieses Problem? Beide Strings können eine Kombination von Unicode und Nicht-Unicode-characteres sein!
Lösung
Wenn Sie nicht den Teil verwenden, verwenden Sie nicht strstr
(oder dessen derivitives). Alles, was Sie über Pflege ist, dass die Zeichenfolge vorhanden ist, so verwenden mb_stripos
:
if (mb_stripos($string1, $string2) !== false) {
Andere Tipps
Warum nicht einfach benutzen mb_stripos ?
Wenn Sie nicht über die Quellencodierung (n) kennen, die Sie verwenden müssen mb_detect_encoding und anschließend mb_convert_encoding jede der Saiten in eine gemeinsame Codierung zu konvertieren, aber das sollte ziemlich trivial sein.
sagte, dass, was Sie brauchen für falsch bei Zeichenfolge2 überprüfen zu Beginn auftritt (d.h .: Position Null) von string1.)
h .: Verwenden ...
if (mb_stripos($string1, $string2) !== false) {
// $string2 was found within $string1
...
}
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";
Beachten Sie den Typ sicheren Vergleichsoperator !==
.