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.
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) );
Usa esta función, funcionó para mí.
function substr_unicode($str, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
Créditos: http://php.net/manual/en/function.mb-substr.php#107698
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í.
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.