strip_tags remove ent_quotes ejemplo php encoding utf-8 substring

remove - PHP: ¿Es posible SUBSTRAR correctamente una cadena UTF-8?



strip_tags() (4)

Is mb_substr () no funciona para usted?

Tengo (en una base de datos SQLite) la siguiente cadena:

Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа.

La cadena se muestra correctamente mediante PHP utilizando print . Me gustaría obtener solo los primeros 50 caracteres de esta cadena, es decir,

Лампа в вытяжке на кухне меняется, начиная с вытас .

He intentado usar tanto el substr como mb_substr , y obtener

Лампа в вытяжке на кухне ме , es decir, solo 28 caracteres.

Después de leer aquí y en otros lugares sobre los problemas de mbstring, me doy cuenta de que esto es en realidad una cadena de 50 bytes (22 caracteres rusos = 44 bytes más 5 espacios más 1 símbolo de pregunta).

¿Hay alguna buena solución para esto? Todas mis cadenas son UTF-8, así que podría programar una substrofunción, comprobando el primer bit de cada byte, etc. Pero esto seguramente debería haberse hecho antes, ¿no?

ACTUALIZACIÓN: Creo que mb_substr no funciona correctamente porque mb_detect_encoding() no funciona correctamente .


Vea la siguiente URL:

Extraer una subcadena de una cadena UTF-8 en PHP

http://osc.co.cr/extracting-a-substring-from-a-utf-8-string-in-php/

Subcadena de PHP con UTF-8

http://greekgeekz.blogspot.in/2010/11/php-substring-with-utf-8.html

O inténtalo:

Ejemplo 1

$str1 = utf8_encode("Feliz día"); $str2 = substr($str1, 0, 9); echo utf8_decode($str2); // will output Feliz d�

Ejemplo n. ° 2

$str3 = mb_substr($str1, 0, 9, ''UTF-8''); echo utf8_decode($str3); // will output Feliz dí

A partir de PHP> = 5.3 también puede declarar la directiva de codificación y usar la función substr

Ejemplo n. ° 3

declare(encoding=''UTF-8''); $str4 = "Feliz día"; $str5 = substr($str4, 0, 9);echo $str5; // will output Feliz dí


Pruebe mb_strcut() .
Su comportamiento es el mismo que substr() , excepto que no deja roto el último carácter.
Si en la posición que está tratando de cortar, tiene un carácter multibyte con 2 o más bytes, mb_strcut() no cortará el personaje en pedazos, pero ignorará este carácter.

Por ejemplo, si está tratando de recortar 50 bytes de la cadena Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа. , mb_strcut() no cortará el carácter н a la mitad, sino que lo eliminará del resultado.

$str = "Лампа в вытяжке на кухне меняется, начиная с вытаскивания белого штырька справа."; echo mb_strcut($str, 0, 50); // Prints: Лампа в вытяжке на кухне ме echo substr($str, 0, 50); // Prints: Лампа в вытяжке на кухне ме� echo mb_substr($str, 0, 50); // Prints: Лампа в вытяжке на кухне меняется, начиная с вытас

Espero eso ayude.


Como de costumbre, la respuesta parece haber estado aquí. (Honestamente, he buscado alrededor de una hora)

Una respuesta en (鉑) funciones de cadena y UTF8 en php lee:

Asegúrese de establecer la codificación interna adecuada: mb_internal_encoding (''utf-8'');

Con este mb_internal_encoding (''utf-8''); todo funciona bien Perdón por molestarlos chicos, gracias por la ayuda.