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!

War es hilfreich?

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 !==.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top