hay una manera de cómo convertir entidades HTML a sus caracteres aplicables. Algo similar a html_entity_decode()?
Estoy tratando de hacer texto ordinario sin entidades HTML desde la salida de TinyMCE.Convierte entidades PHP como – o & scaron; a sus caracteres aplicables
Respuesta
Según el user contributed notes en el manual, html_entity_decode()
parece que solo convierte unas 100 entidades en lugar de las más de 200 que existen en la especificación.
Hay un script llamado html_entity_decode_full
que parece proporcionar decodificación para todas las entidades, pero el sitio original del autor está inactivo. Here es un enlace a un repositorio de Drupal que contiene la función. Esto convertirá todas las entidades:
/* Test call */
echo decode_entities_full("– THIS IS A DASH", ENT_COMPAT, "utf-8");
/**
* Helper function for drupal_html_to_text().
*
* Calls helper function for HTML 4 entity decoding.
* Per: http://www.lazycat.org/software/html_entity_decode_full.phps
*/
function decode_entities_full($string, $quotes = ENT_COMPAT, $charset = 'ISO-8859-1') {
return html_entity_decode(preg_replace_callback('/&([a-zA-Z][a-zA-Z0-9]+);/', 'convert_entity', $string), $quotes, $charset);
}
/**
* Helper function for decode_entities_full().
*
* This contains the full HTML 4 Recommendation listing of entities, so the default to discard
* entities not in the table is generally good. Pass false to the second argument to return
* the faulty entity unmodified, if you're ill or something.
* Per: http://www.lazycat.org/software/html_entity_decode_full.phps
*/
function convert_entity($matches, $destroy = true) {
static $table = array('quot' => '"','amp' => '&','lt' => '<','gt' => '>','OElig' => 'Œ','oelig' => 'œ','Scaron' => 'Š','scaron' => 'š','Yuml' => 'Ÿ','circ' => 'ˆ','tilde' => '˜','ensp' => ' ','emsp' => ' ','thinsp' => ' ','zwnj' => '‌','zwj' => '‍','lrm' => '‎','rlm' => '‏','ndash' => '–','mdash' => '—','lsquo' => '‘','rsquo' => '’','sbquo' => '‚','ldquo' => '“','rdquo' => '”','bdquo' => '„','dagger' => '†','Dagger' => '‡','permil' => '‰','lsaquo' => '‹','rsaquo' => '›','euro' => '€','fnof' => 'ƒ','Alpha' => 'Α','Beta' => 'Β','Gamma' => 'Γ','Delta' => 'Δ','Epsilon' => 'Ε','Zeta' => 'Ζ','Eta' => 'Η','Theta' => 'Θ','Iota' => 'Ι','Kappa' => 'Κ','Lambda' => 'Λ','Mu' => 'Μ','Nu' => 'Ν','Xi' => 'Ξ','Omicron' => 'Ο','Pi' => 'Π','Rho' => 'Ρ','Sigma' => 'Σ','Tau' => 'Τ','Upsilon' => 'Υ','Phi' => 'Φ','Chi' => 'Χ','Psi' => 'Ψ','Omega' => 'Ω','alpha' => 'α','beta' => 'β','gamma' => 'γ','delta' => 'δ','epsilon' => 'ε','zeta' => 'ζ','eta' => 'η','theta' => 'θ','iota' => 'ι','kappa' => 'κ','lambda' => 'λ','mu' => 'μ','nu' => 'ν','xi' => 'ξ','omicron' => 'ο','pi' => 'π','rho' => 'ρ','sigmaf' => 'ς','sigma' => 'σ','tau' => 'τ','upsilon' => 'υ','phi' => 'φ','chi' => 'χ','psi' => 'ψ','omega' => 'ω','thetasym' => 'ϑ','upsih' => 'ϒ','piv' => 'ϖ','bull' => '•','hellip' => '…','prime' => '′','Prime' => '″','oline' => '‾','frasl' => '⁄','weierp' => '℘','image' => 'ℑ','real' => 'ℜ','trade' => '™','alefsym' => 'ℵ','larr' => '←','uarr' => '↑','rarr' => '→','darr' => '↓','harr' => '↔','crarr' => '↵','lArr' => '⇐','uArr' => '⇑','rArr' => '⇒','dArr' => '⇓','hArr' => '⇔','forall' => '∀','part' => '∂','exist' => '∃','empty' => '∅','nabla' => '∇','isin' => '∈','notin' => '∉','ni' => '∋','prod' => '∏','sum' => '∑','minus' => '−','lowast' => '∗','radic' => '√','prop' => '∝','infin' => '∞','ang' => '∠','and' => '∧','or' => '∨','cap' => '∩','cup' => '∪','int' => '∫','there4' => '∴','sim' => '∼','cong' => '≅','asymp' => '≈','ne' => '≠','equiv' => '≡','le' => '≤','ge' => '≥','sub' => '⊂','sup' => '⊃','nsub' => '⊄','sube' => '⊆','supe' => '⊇','oplus' => '⊕','otimes' => '⊗','perp' => '⊥','sdot' => '⋅','lceil' => '⌈','rceil' => '⌉','lfloor' => '⌊','rfloor' => '⌋','lang' => '〈','rang' => '〉','loz' => '◊','spades' => '♠','clubs' => '♣','hearts' => '♥','diams' => '♦','nbsp' => ' ','iexcl' => '¡','cent' => '¢','pound' => '£','curren' => '¤','yen' => '¥','brvbar' => '¦','sect' => '§','uml' => '¨','copy' => '©','ordf' => 'ª','laquo' => '«','not' => '¬','shy' => '­','reg' => '®','macr' => '¯','deg' => '°','plusmn' => '±','sup2' => '²','sup3' => '³','acute' => '´','micro' => 'µ','para' => '¶','middot' => '·','cedil' => '¸','sup1' => '¹','ordm' => 'º','raquo' => '»','frac14' => '¼','frac12' => '½','frac34' => '¾','iquest' => '¿','Agrave' => 'À','Aacute' => 'Á','Acirc' => 'Â','Atilde' => 'Ã','Auml' => 'Ä','Aring' => 'Å','AElig' => 'Æ','Ccedil' => 'Ç','Egrave' => 'È','Eacute' => 'É','Ecirc' => 'Ê','Euml' => 'Ë','Igrave' => 'Ì','Iacute' => 'Í','Icirc' => 'Î','Iuml' => 'Ï','ETH' => 'Ð','Ntilde' => 'Ñ','Ograve' => 'Ò','Oacute' => 'Ó','Ocirc' => 'Ô','Otilde' => 'Õ','Ouml' => 'Ö','times' => '×','Oslash' => 'Ø','Ugrave' => 'Ù','Uacute' => 'Ú','Ucirc' => 'Û','Uuml' => 'Ü','Yacute' => 'Ý','THORN' => 'Þ','szlig' => 'ß','agrave' => 'à','aacute' => 'á','acirc' => 'â','atilde' => 'ã','auml' => 'ä','aring' => 'å','aelig' => 'æ','ccedil' => 'ç','egrave' => 'è','eacute' => 'é','ecirc' => 'ê','euml' => 'ë','igrave' => 'ì','iacute' => 'í','icirc' => 'î','iuml' => 'ï','eth' => 'ð','ntilde' => 'ñ','ograve' => 'ò','oacute' => 'ó','ocirc' => 'ô','otilde' => 'õ','ouml' => 'ö','divide' => '÷','oslash' => 'ø','ugrave' => 'ù','uacute' => 'ú','ucirc' => 'û','uuml' => 'ü','yacute' => 'ý','thorn' => 'þ','yuml' => 'ÿ'
);
if (isset($table[$matches[1]])) return $table[$matches[1]];
// else
return $destroy ? '' : $matches[0];
}
O simplemente puede utilizar:
echo html_entity_decode('&', ENT_NOQUOTES, 'UTF-8');
escribí originalmente the code that's pasted into Pekka's answer - es casi completamente innecesario salvo en casos específicos (sobre todo para la eliminación de entidades inexistentes, lo que html_entity_decode()
no toca, o para convertir a entidades numéricas si está haciendo XML que no está codificado en UTF-8).
TinyMCE tiene una opción para devolver la salida en bruto (no codificada en HTML), por lo que ese debería ser su primer punto de llamada. Mira esto entry in the TinyMCE manual para más información sobre eso.
sí, 'entity_encoding' es lo que estaba buscando gracias :). – martin
- 1. Cómo convertir entidades HTML como – a sus equivalentes de caracteres?
- 2. ¿Cómo puedo mostrar caracteres especiales (como –) en TextView?
- 3. Convertir entidades de caracteres a sus equivalentes Unicode
- 4. Convierte caracteres utf8 a iso-88591 y vuelve a PHP
- 5. Bash: Convierte caracteres no ASCII a ASCII
- 6. Cómo convertir caracteres UTF8 a entidades de caracteres numéricos en PHP
- 7. Convierte caracteres especiales como '\ t' en "\ t" (una pestaña real)
- 8. Coldfusion no convierte texto acentuado o caracteres MS Word
- 9. Convierte .doc a html en php
- 10. Convierte utf8 a latin1 en PHP. Todos los caracteres superiores a 255 se convierten en referencias de caracteres
- 11. ¿.NET tiene un mapeo integrado de funciones entre entidades de caracteres y sus valores Unicode?
- 12. PHP convierte decimal a fracción y viceversa?
- 13. Entidades de caracteres HTML y conjunto de codificación de caracteres
- 14. Convierte SVG a PNG o JPEG
- 15. Usar JavaScript regex para reemplazar entidades HTML numéricas con sus caracteres reales
- 16. Convertir entidades de caracteres HTML a texto normal usando javascript
- 17. Convierte latin1 a UTF8
- 18. ¿Cómo convertir caracteres especiales en entidades html?
- 19. ¿Convierte CString en matriz de caracteres?
- 20. Conversión de entidades HTML con nombre a entidades HTML numéricas
- 21. HTTP Post convierte € a? símbolo
- 22. Cómo decodificar entidades HTML numéricas en PHP
- 23. Convierte, o no, un string a variables (como format(), pero al revés) en Python
- 24. ASP.NET MVC: ¿usar entidades EF como viewmodels?
- 25. PHP: ¿hay alguna manera de ver caracteres "invisibles" como \ n
- 26. Ordenar utilizando caracteres utf en mysql o php? mejores soluciones
- 27. ASP.Net MVC ¿Dónde se convierte de Entidades a Modelos de Vista?
- 28. Impedir que jQuery escape entidades html
- 29. Convierte PrintStream a PrintWriter
- 30. Convierte BSTR a char *
eso es genial, muchas gracias! – martin