Domanda

Io uso questo codice per cercare una stringa UTF-8 in un'altra stringa UTF-8:

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

ma restituisce sempre 0! Qualcuno sa una soluzione migliore a questo problema? Entrambe le stringhe possono essere una combinazione di Unicode e non Unicode characteres!

È stato utile?

Soluzione

Se non si utilizza la stringa, non utilizzare strstr (o le sue derivitives). Tutto quello che interessa è che la stringa esistente, in modo da utilizzare mb_stripos :

if (mb_stripos($string1, $string2) !== false) {

Altri suggerimenti

Perché non basta usare mb_stripos ?

Se non si conosce la codifica del sorgente (s) potrebbe essere necessario l'uso mb_detect_encoding e successivamente mb_convert_encoding per convertire ciascuna delle stringhe in una codifica comune, ma questo dovrebbe essere abbastanza banale.

Detto questo, è necessario verificare la presenza di falso nel caso in cui si verifica stringa2 alla partenza (cioè .: posizione zero) di string1.)

cioè .: Usa ...

if (mb_stripos($string1, $string2) !== false) {
    // $string2 was found within $string1
    ...
}
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";

Si noti il ??tipo di sicurezza !== operatore di confronto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top