una length eliminar ejemplos dividir caracteres caracter cadena buscar php substr

length - Error de la función de PHP substr()



substr php (7)

Cuando uso substr() obtengo un caracter extraño al final

$articleText = substr($articleText,0,500);

Tengo una salida de 500 caracteres y <-

¿Cómo puedo arreglar esto? ¿Es un problema de codificación? Mi idioma es el griego.


Parece que estás cortando un personaje Unicode por la mitad. Utilice mb_substr en mb_substr lugar para un corte de cadena seguro para Unicode


Solución alternativa para cadenas codificadas en UTF-8: esto convertirá UTF-8 en caracteres antes de cortar la subcadena.

$articleText = substr(utf8_decode($articleText),0,500);

Para devolver la cadena articleText a UTF-8, se necesitará una operación adicional:

$articleText = utf8_encode( substr(utf8_decode($articleText),0,500) );



Usted está tratando de cortar el carácter Unicode. Así que prefiero en lugar de substr() intente mb_substr() en PHP.

substr ()

substr ( string $string , int $start [, int $length ] )

mb_substr ()

mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

Para obtener más información sobre substr () - Créditos => Consulte aquí.


Utilice mb_substr en mb_substr lugar, es capaz de manejar múltiples codificaciones, no solo cadenas de un solo byte como substr :

$articleText = mb_substr($articleText,0,500,''UTF-8'');


ms_substr () también funciona de manera excelente para eliminar saltos de línea extraños extraños, con los que tuve problemas después de analizar el código html. El problema NO fue manejado por:

trim()

o:

var_dump(preg_match(''/^/n|/n$/'', $variable));

o:

str_replace (array(''/r/n'', ''/n'', ''/r''), '' '', $text)

No atrapes


substr está contando usando bytes, y no caracteres.

el griego probablemente significa que está utilizando alguna codificación de múltiples bytes, como UTF-8, y el conteo por bytes no es muy bueno para ellos.

Tal vez el uso de mb_substr podría ayudar, aquí: las funciones mb_* se han creado específicamente para codificaciones de múltiples bytes.