2012-01-27 17 views
5

Tengo un guión extraño en mi texto, que no se detecta en un str_replace.Carácter extraño del tablero en PHP

Aquí se muestra un ejemplo:

Sun: 10:00 – 3:00pm

no sé si el tablero se mostrará aquí .. pero cuando se inserta en mi mesa, que es como una caja cuadrada con el caracteres 0096

Se parece mucho a un – - al ver la fuente, no hay caracteres especiales, solo el guión.

str_replace('–', '', $var); 

La sustitución anterior no parece captarlo, ¿Alguien más ha tenido este problema antes?

+1

debe darnos la cadena en formato [base64_encode] (http://www.php.net/base64_encode), de modo que se conserve su seguridad binaria. Esto hace que sea fácil para nosotros identificar al personaje. – goat

+0

Simplemente preguntando lo obvio, pero ¿estás guardando el valor de retorno de str_replace? Es decir. '$ var = str_replace ('-', '', $ var);' str_replace no realiza operaciones directamente en la cadena. – tangrs

+0

¿Qué juego de caracteres está usando su mesa? –

Respuesta

12

Eso es en dash. En PHP, la forma más portátil de conseguirlo es con html_entity_decode:

$endash = html_entity_decode('–', ENT_COMPAT, 'UTF-8'); 
echo str_replace($endash, '(en dash)', 'Sun: 10:00 – 3:00pm'); 

Tenga en cuenta que esto sólo funciona si la codificación de página web es UTF-8 y su codificación editor (o la codificación del tercer argumento de str_replace) es también. Si usa otra codificación (y debe usar la misma tanto para el sitio web como para el editor), reemplace el tercer parámetro de html_entity_decode con su nombre.

0

En - Dash que estamos acostumbrados a ver
Em Dash que se supone que debemos utilizar la mayor parte del tiempo en el uso "-".
Básicamente, es una cuestión de gramática.

Lea sobre Wikipedia: http://en.wikipedia.org/wiki/Dash

en un Mac (con distribución de teclado de Estados Unidos) lo consigo golpear Alt + -, mismo que se obtiene _ con shift + _

No es necesario cualquier tratamiento especial como si fuera un símbolo chino. Es un personaje válido Trátelo como tal: str_replace('–', 'em dash');.

1

Para una alternativa, si otras respuestas no funcionan para usted, como en mi caso, esto funciona para mí.

$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD"; 
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title); 
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title); 
Cuestiones relacionadas