2011-10-07 18 views
7

Tengo una pregunta bastante simple. Hay una entidad html con nombre en la mayoría de las referencias para el signo de dólar, y es lo que cabría esperar; '& dollar;'.

Pero en otras referencias esto falta, y le diremos que solo la entidad numérica está disponible (& # 36;).

Como recuerdo, la entidad nombrada no existía desde hace mucho tiempo porque $ es parte del conjunto ascii estándar. Y debido a esta versión anterior/anterior de IE y otros navegadores no son compatibles con esta entidad.

¿Cuál es el problema con esto actualmente? Estoy buscando cuál es el soporte para la entidad nombrada y por qué esto no era compatible en primer lugar ...

Aquí hay una referencia a todos los símbolos de moneda donde curiosamente solo el dólar no tiene un nombre entidad http://www.entitycode.com/#currency-content

Aquí es un pequeño ejemplo de lo que estoy hablando cuando se utiliza un dólar + int http://codepad.org/xCxWZWsu Y sí sé que en este ejemplo sencillo podría tener apenas escapado el signo de dólar con una barra, pero yo cuando creen Digo que convertirlo en una entidad cuando guardo la cadena es la solución más sensata en mi caso.

Independientemente de mi ejemplo, todavía siento curiosidad por la compatibilidad con el & dólar; entidad es.

+0

¿Cuál es exactamente su pregunta? ¿Qué debería importar si existe una referencia de carácter '& dollar;' o no? – RoToRa

+0

@RoToRa es un poco más semántico, necesitaba usar una entidad porque estaba haciendo regex reemplaza en cadenas con estos en él, y desde $ 1 referencias a posible coincidencia encontrada en la expresión regular convertiría cualquier $ \ d a 0. Pero el soporte para entidades numéricas en los clientes suele ser más bajo que las entidades con nombre. Esto me pareció muy curioso. – sg3s

+0

No veo por qué habría que usar una entidad debido a las expresiones regulares. ¿Podría darnos algún código concreto que muestre su problema? – RoToRa

Respuesta

4

El official list of entities no enumera, así que habría archivarlo en “algunos navegadores pueden haber tenido apoyo a la misma, no se basan en ella, sin embargo.”

En general, se necesitan para representar entidades caracteres no ASCII cuando el conjunto de caracteres del documento estaba limitado por ASCII. Hoy en día, con UTF-8, el juego de caracteres más frecuente en la web, creo que finalmente podemos mover las entidades nombradas y simplemente usar los caracteres directamente.

0

La única solución segura es usar preg_quote() cuando se utiliza la entrada para expresiones regulares. De lo contrario, debe usar html-enities para. \ + *? [^] $() {} =! <> | : - también.

+0

Sé cómo escapar cadenas para usar en expresiones regulares. No fue mi pregunta. – sg3s

Cuestiones relacionadas