2010-12-13 20 views
0

ich diesen Code verwenden, um ein utf-8-String in einem anderen utf-8-String zu suchen:Suche nach einem Multibyte-String in einem anderen Multibyte-String

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

aber es gibt immer 0! Kennt jemand eine bessere Lösung für dieses Problem? Beide Zeichenfolgen können eine Kombination aus Unicode- und Nicht-Unicode-Zeichen sein!

+0

Ich nehme an, Sie müssen nur wissen, ob die Zeichenfolge in der anderen Zeichenfolge auftritt, oder? –

+1

Fehlende s im zweiten Variablennamen. – rik

+0

Ja, das stimmt! Ich möchte nur prüfen, ob eine Zeichenkette in einer anderen Zeichenkette existiert oder nicht ... –

Antwort

1

Wenn Sie‘ Verwenden Sie den Teilstring nicht, verwenden Sie nicht strstr (oder seine Derivate). Alles über Sie interessiert, ist, dass die Zeichenfolge vorhanden ist, so mb_stripos verwenden:

if (mb_stripos($string1, $string2) !== false) { 
0
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2"; 

Hinweis der Art sicher Vergleichsoperator !==.

3

Warum nicht einfach mb_stripos verwenden?

Wenn Sie die Quellcodierung (en) nicht kennen, müssen Sie möglicherweise mb_detect_encoding und anschließend mb_convert_encoding verwenden, um jede der Zeichenfolgen in eine allgemeine Codierung zu konvertieren, aber das sollte ziemlich trivial sein.

Das heißt, Sie müssen für falsch bei Zeichenfolge2 überprüfen zu Beginn auftritt (dh Position Null). Von string1)

dh: Verwenden Sie ...

if (mb_stripos($string1, $string2) !== false) { 
    // $string2 was found within $string1 
    ... 
} 
+0

! == false did trick .. thanks – Alper

Verwandte Themen