2012-05-23 11 views
6

Realmente no sé por qué en letra cirílica, substring reemplaza algunos caracteres con "?"Subcadena de PHP e ícono extraño en HTML renderizado

Mi Código

$string1 = get_the_content(); 
$string = strip_tags($string1); 
$stringcutted = substr($string,0,150); 
$replacement = "..."; 
$final = substr($stringcutted, 0, -3).$replacement; 

Y mira cómo se representa en html

strange icon1 strange icon2

Cualquier solución?

Respuesta

3

Debido a que las funciones de cadena de PHP se basan en cadenas de bytes; no tienen conocimiento de la codificación de caracteres. Así pues, en algo así como UTF-8, donde un personaje puede tomar hasta más de un byte, no funciona la forma en que le quiere:

<?php 
$x = 'Подмосковные вечера'; 
print(strlen($x)."\n");  # 37, not 19 
print(substr($x,0,1)."\n"); # �, not П 
print(substr($x,0,2)."\n"); # П, not По 
?> 

Mira el multibyte string functions si se quiere manipular sin -ASCII texto.

0

Debe verificar la codificación de caracteres. Básicamente, tiene una cadena codificada en un formato y la está superando en otro formato.

Para la materia internacional (y parece que está haciendo eso) entonces que haría uso de UTF-8: - En el archivo HTML poner en la cabeza (cerca de la parte superior) - En su PHP, asegúrese está manejando todas las cadenas como UTF-8 - Si también tiene una base de datos, asegúrese de que la base de datos, las tablas y los campos estén todos configurados como UTF-8 (advertencia: ¡realizar este cambio puede corromper exisar datos sin importar/exportar!) - Si está leyendo archivos de plantilla con caracteres especiales, asegúrese también de que sean UTF-8. (Si no hay caracteres especiales, entonces AscII normal lo hará)

Esa es la respuesta simple. Hay mucho que leer sobre la codificación de caracteres, solo Google.

(solución alternativa, el uso ASCII, pero convertir todo para los códigos de caracteres en la web amigable. Pero eso es más difícil de obtener todos los códigos de derecho, especialmente si el manejo de la entrada del usuario.)

Cuestiones relacionadas