Pregunta

Yo uso este código para buscar una cadena UTF-8 en otra cadena UTF-8:

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

pero siempre devuelve 0! ¿Alguien sabe alguna solución mejor a este problema? Ambas cadenas pueden ser una combinación de Unicode y no Unicode characteres!

¿Fue útil?

Solución

Si usted no está usando la subcadena, no utilice strstr (o sus productos derivados). Todo lo que importa es que la cadena existe, por lo que usar mb_stripos :

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

Otros consejos

¿Por qué no usar mb_stripos ?

Si no conoce la codificación (s) fuente que puede necesitar el uso mb_detect_encoding y posteriormente mb_convert_encoding para convertir cada una de las cadenas en una codificación común, pero esto debe ser bastante trivial.

Dicho esto, es necesario comprobar si hay falsa en el caso string2 se produce en el inicio (es decir .: posición cero) de cadena1.)

es decir .: Uso ...

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

Tenga en cuenta la seguridad !== operador de comparación tipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top