lista - remove html tags php
Conversión de entidades HTML con nombre a entidades HTML numéricas (5)
Está buscando una función de traducción simple de entidades HTML con nombre a su contraparte numérica.
Esto se puede hacer utilizando una tabla de traducción (que es una matriz) y la función de traducción de cadena ( strtr
):
$translated = strtr($string, $HTML401NamedToNumeric);
Esto funciona para $string
codificación UTF-8 o un juego de caracteres de un solo byte.
A continuación, se muestra una matriz de ejemplo para las entidades con nombre HTML 4.01 especificadas por W3C. Contiene 252 entidades. Si quieres soportar XHTML, entonces hay uno más (lo puse al final):
$HTML401NamedToNumeric = array(
'' '' => '' '', # no-break space = non-breaking space, U+00A0 ISOnum
''¡'' => ''¡'', # inverted exclamation mark, U+00A1 ISOnum
''¢'' => ''¢'', # cent sign, U+00A2 ISOnum
''£'' => ''£'', # pound sign, U+00A3 ISOnum
''¤'' => ''¤'', # currency sign, U+00A4 ISOnum
''¥'' => ''¥'', # yen sign = yuan sign, U+00A5 ISOnum
''¦'' => ''¦'', # broken bar = broken vertical bar, U+00A6 ISOnum
''§'' => ''§'', # section sign, U+00A7 ISOnum
''¨'' => ''¨'', # diaeresis = spacing diaeresis, U+00A8 ISOdia
''©'' => ''©'', # copyright sign, U+00A9 ISOnum
''ª'' => ''ª'', # feminine ordinal indicator, U+00AA ISOnum
''«'' => ''«'', # left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum
''¬'' => ''¬'', # not sign, U+00AC ISOnum
''­'' => ''­'', # soft hyphen = discretionary hyphen, U+00AD ISOnum
''®'' => ''®'', # registered sign = registered trade mark sign, U+00AE ISOnum
''¯'' => ''¯'', # macron = spacing macron = overline = APL overbar, U+00AF ISOdia
''°'' => ''°'', # degree sign, U+00B0 ISOnum
''±'' => ''±'', # plus-minus sign = plus-or-minus sign, U+00B1 ISOnum
''²'' => ''²'', # superscript two = superscript digit two = squared, U+00B2 ISOnum
''³'' => ''³'', # superscript three = superscript digit three = cubed, U+00B3 ISOnum
''´'' => ''´'', # acute accent = spacing acute, U+00B4 ISOdia
''µ'' => ''µ'', # micro sign, U+00B5 ISOnum
''¶'' => ''¶'', # pilcrow sign = paragraph sign, U+00B6 ISOnum
''·'' => ''·'', # middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum
''¸'' => ''¸'', # cedilla = spacing cedilla, U+00B8 ISOdia
''¹'' => ''¹'', # superscript one = superscript digit one, U+00B9 ISOnum
''º'' => ''º'', # masculine ordinal indicator, U+00BA ISOnum
''»'' => ''»'', # right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum
''¼'' => ''¼'', # vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum
''½'' => ''½'', # vulgar fraction one half = fraction one half, U+00BD ISOnum
''¾'' => ''¾'', # vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum
''¿'' => ''¿'', # inverted question mark = turned question mark, U+00BF ISOnum
''À'' => ''À'', # latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1
''Á'' => ''Á'', # latin capital letter A with acute, U+00C1 ISOlat1
''Â'' => ''Â'', # latin capital letter A with circumflex, U+00C2 ISOlat1
''Ã'' => ''Ã'', # latin capital letter A with tilde, U+00C3 ISOlat1
''Ä'' => ''Ä'', # latin capital letter A with diaeresis, U+00C4 ISOlat1
''Å'' => ''Å'', # latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1
''Æ'' => ''Æ'', # latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1
''Ç'' => ''Ç'', # latin capital letter C with cedilla, U+00C7 ISOlat1
''È'' => ''È'', # latin capital letter E with grave, U+00C8 ISOlat1
''É'' => ''É'', # latin capital letter E with acute, U+00C9 ISOlat1
''Ê'' => ''Ê'', # latin capital letter E with circumflex, U+00CA ISOlat1
''Ë'' => ''Ë'', # latin capital letter E with diaeresis, U+00CB ISOlat1
''Ì'' => ''Ì'', # latin capital letter I with grave, U+00CC ISOlat1
''Í'' => ''Í'', # latin capital letter I with acute, U+00CD ISOlat1
''Î'' => ''Î'', # latin capital letter I with circumflex, U+00CE ISOlat1
''Ï'' => ''Ï'', # latin capital letter I with diaeresis, U+00CF ISOlat1
''Ð'' => ''Ð'', # latin capital letter ETH, U+00D0 ISOlat1
''Ñ'' => ''Ñ'', # latin capital letter N with tilde, U+00D1 ISOlat1
''Ò'' => ''Ò'', # latin capital letter O with grave, U+00D2 ISOlat1
''Ó'' => ''Ó'', # latin capital letter O with acute, U+00D3 ISOlat1
''Ô'' => ''Ô'', # latin capital letter O with circumflex, U+00D4 ISOlat1
''Õ'' => ''Õ'', # latin capital letter O with tilde, U+00D5 ISOlat1
''Ö'' => ''Ö'', # latin capital letter O with diaeresis, U+00D6 ISOlat1
''×'' => ''×'', # multiplication sign, U+00D7 ISOnum
''Ø'' => ''Ø'', # latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1
''Ù'' => ''Ù'', # latin capital letter U with grave, U+00D9 ISOlat1
''Ú'' => ''Ú'', # latin capital letter U with acute, U+00DA ISOlat1
''Û'' => ''Û'', # latin capital letter U with circumflex, U+00DB ISOlat1
''Ü'' => ''Ü'', # latin capital letter U with diaeresis, U+00DC ISOlat1
''Ý'' => ''Ý'', # latin capital letter Y with acute, U+00DD ISOlat1
''Þ'' => ''Þ'', # latin capital letter THORN, U+00DE ISOlat1
''ß'' => ''ß'', # latin small letter sharp s = ess-zed, U+00DF ISOlat1
''à'' => ''à'', # latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1
''á'' => ''á'', # latin small letter a with acute, U+00E1 ISOlat1
''â'' => ''â'', # latin small letter a with circumflex, U+00E2 ISOlat1
''ã'' => ''ã'', # latin small letter a with tilde, U+00E3 ISOlat1
''ä'' => ''ä'', # latin small letter a with diaeresis, U+00E4 ISOlat1
''å'' => ''å'', # latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1
''æ'' => ''æ'', # latin small letter ae = latin small ligature ae, U+00E6 ISOlat1
''ç'' => ''ç'', # latin small letter c with cedilla, U+00E7 ISOlat1
''è'' => ''è'', # latin small letter e with grave, U+00E8 ISOlat1
''é'' => ''é'', # latin small letter e with acute, U+00E9 ISOlat1
''ê'' => ''ê'', # latin small letter e with circumflex, U+00EA ISOlat1
''ë'' => ''ë'', # latin small letter e with diaeresis, U+00EB ISOlat1
''ì'' => ''ì'', # latin small letter i with grave, U+00EC ISOlat1
''í'' => ''í'', # latin small letter i with acute, U+00ED ISOlat1
''î'' => ''î'', # latin small letter i with circumflex, U+00EE ISOlat1
''ï'' => ''ï'', # latin small letter i with diaeresis, U+00EF ISOlat1
''ð'' => ''ð'', # latin small letter eth, U+00F0 ISOlat1
''ñ'' => ''ñ'', # latin small letter n with tilde, U+00F1 ISOlat1
''ò'' => ''ò'', # latin small letter o with grave, U+00F2 ISOlat1
''ó'' => ''ó'', # latin small letter o with acute, U+00F3 ISOlat1
''ô'' => ''ô'', # latin small letter o with circumflex, U+00F4 ISOlat1
''õ'' => ''õ'', # latin small letter o with tilde, U+00F5 ISOlat1
''ö'' => ''ö'', # latin small letter o with diaeresis, U+00F6 ISOlat1
''÷'' => ''÷'', # division sign, U+00F7 ISOnum
''ø'' => ''ø'', # latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1
''ù'' => ''ù'', # latin small letter u with grave, U+00F9 ISOlat1
''ú'' => ''ú'', # latin small letter u with acute, U+00FA ISOlat1
''û'' => ''û'', # latin small letter u with circumflex, U+00FB ISOlat1
''ü'' => ''ü'', # latin small letter u with diaeresis, U+00FC ISOlat1
''ý'' => ''ý'', # latin small letter y with acute, U+00FD ISOlat1
''þ'' => ''þ'', # latin small letter thorn, U+00FE ISOlat1
''ÿ'' => ''ÿ'', # latin small letter y with diaeresis, U+00FF ISOlat1
''ƒ'' => ''ƒ'', # latin small f with hook = function = florin, U+0192 ISOtech
''Α'' => ''Α'', # greek capital letter alpha, U+0391
''Β'' => ''Β'', # greek capital letter beta, U+0392
''Γ'' => ''Γ'', # greek capital letter gamma, U+0393 ISOgrk3
''Δ'' => ''Δ'', # greek capital letter delta, U+0394 ISOgrk3
''Ε'' => ''Ε'', # greek capital letter epsilon, U+0395
''Ζ'' => ''Ζ'', # greek capital letter zeta, U+0396
''Η'' => ''Η'', # greek capital letter eta, U+0397
''Θ'' => ''Θ'', # greek capital letter theta, U+0398 ISOgrk3
''Ι'' => ''Ι'', # greek capital letter iota, U+0399
''Κ'' => ''Κ'', # greek capital letter kappa, U+039A
''Λ'' => ''Λ'', # greek capital letter lambda, U+039B ISOgrk3
''Μ'' => ''Μ'', # greek capital letter mu, U+039C
''Ν'' => ''Ν'', # greek capital letter nu, U+039D
''Ξ'' => ''Ξ'', # greek capital letter xi, U+039E ISOgrk3
''Ο'' => ''Ο'', # greek capital letter omicron, U+039F
''Π'' => ''Π'', # greek capital letter pi, U+03A0 ISOgrk3
''Ρ'' => ''Ρ'', # greek capital letter rho, U+03A1
''Σ'' => ''Σ'', # greek capital letter sigma, U+03A3 ISOgrk3
''Τ'' => ''Τ'', # greek capital letter tau, U+03A4
''Υ'' => ''Υ'', # greek capital letter upsilon, U+03A5 ISOgrk3
''Φ'' => ''Φ'', # greek capital letter phi, U+03A6 ISOgrk3
''Χ'' => ''Χ'', # greek capital letter chi, U+03A7
''Ψ'' => ''Ψ'', # greek capital letter psi, U+03A8 ISOgrk3
''Ω'' => ''Ω'', # greek capital letter omega, U+03A9 ISOgrk3
''α'' => ''α'', # greek small letter alpha, U+03B1 ISOgrk3
''β'' => ''β'', # greek small letter beta, U+03B2 ISOgrk3
''γ'' => ''γ'', # greek small letter gamma, U+03B3 ISOgrk3
''δ'' => ''δ'', # greek small letter delta, U+03B4 ISOgrk3
''ε'' => ''ε'', # greek small letter epsilon, U+03B5 ISOgrk3
''ζ'' => ''ζ'', # greek small letter zeta, U+03B6 ISOgrk3
''η'' => ''η'', # greek small letter eta, U+03B7 ISOgrk3
''θ'' => ''θ'', # greek small letter theta, U+03B8 ISOgrk3
''ι'' => ''ι'', # greek small letter iota, U+03B9 ISOgrk3
''κ'' => ''κ'', # greek small letter kappa, U+03BA ISOgrk3
''λ'' => ''λ'', # greek small letter lambda, U+03BB ISOgrk3
''μ'' => ''μ'', # greek small letter mu, U+03BC ISOgrk3
''ν'' => ''ν'', # greek small letter nu, U+03BD ISOgrk3
''ξ'' => ''ξ'', # greek small letter xi, U+03BE ISOgrk3
''ο'' => ''ο'', # greek small letter omicron, U+03BF NEW
''π'' => ''π'', # greek small letter pi, U+03C0 ISOgrk3
''ρ'' => ''ρ'', # greek small letter rho, U+03C1 ISOgrk3
''ς'' => ''ς'', # greek small letter final sigma, U+03C2 ISOgrk3
''σ'' => ''σ'', # greek small letter sigma, U+03C3 ISOgrk3
''τ'' => ''τ'', # greek small letter tau, U+03C4 ISOgrk3
''υ'' => ''υ'', # greek small letter upsilon, U+03C5 ISOgrk3
''φ'' => ''φ'', # greek small letter phi, U+03C6 ISOgrk3
''χ'' => ''χ'', # greek small letter chi, U+03C7 ISOgrk3
''ψ'' => ''ψ'', # greek small letter psi, U+03C8 ISOgrk3
''ω'' => ''ω'', # greek small letter omega, U+03C9 ISOgrk3
''ϑ'' => ''ϑ'', # greek small letter theta symbol, U+03D1 NEW
''ϒ'' => ''ϒ'', # greek upsilon with hook symbol, U+03D2 NEW
''ϖ'' => ''ϖ'', # greek pi symbol, U+03D6 ISOgrk3
''•'' => ''•'', # bullet = black small circle, U+2022 ISOpub
''…'' => ''…'', # horizontal ellipsis = three dot leader, U+2026 ISOpub
''′'' => ''′'', # prime = minutes = feet, U+2032 ISOtech
''″'' => ''″'', # double prime = seconds = inches, U+2033 ISOtech
''‾'' => ''‾'', # overline = spacing overscore, U+203E NEW
''⁄'' => ''⁄'', # fraction slash, U+2044 NEW
''℘'' => ''℘'', # script capital P = power set = Weierstrass p, U+2118 ISOamso
''ℑ'' => ''ℑ'', # blackletter capital I = imaginary part, U+2111 ISOamso
''ℜ'' => ''ℜ'', # blackletter capital R = real part symbol, U+211C ISOamso
''™'' => ''™'', # trade mark sign, U+2122 ISOnum
''ℵ'' => ''ℵ'', # alef symbol = first transfinite cardinal, U+2135 NEW
''←'' => ''←'', # leftwards arrow, U+2190 ISOnum
''↑'' => ''↑'', # upwards arrow, U+2191 ISOnum
''→'' => ''→'', # rightwards arrow, U+2192 ISOnum
''↓'' => ''↓'', # downwards arrow, U+2193 ISOnum
''↔'' => ''↔'', # left right arrow, U+2194 ISOamsa
''↵'' => ''↵'', # downwards arrow with corner leftwards = carriage return, U+21B5 NEW
''⇐'' => ''⇐'', # leftwards double arrow, U+21D0 ISOtech
''⇑'' => ''⇑'', # upwards double arrow, U+21D1 ISOamsa
''⇒'' => ''⇒'', # rightwards double arrow, U+21D2 ISOtech
''⇓'' => ''⇓'', # downwards double arrow, U+21D3 ISOamsa
''⇔'' => ''⇔'', # left right double arrow, U+21D4 ISOamsa
''∀'' => ''∀'', # for all, U+2200 ISOtech
''∂'' => ''∂'', # partial differential, U+2202 ISOtech
''∃'' => ''∃'', # there exists, U+2203 ISOtech
''∅'' => ''∅'', # empty set = null set = diameter, U+2205 ISOamso
''∇'' => ''∇'', # nabla = backward difference, U+2207 ISOtech
''∈'' => ''∈'', # element of, U+2208 ISOtech
''∉'' => ''∉'', # not an element of, U+2209 ISOtech
''∋'' => ''∋'', # contains as member, U+220B ISOtech
''∏'' => ''∏'', # n-ary product = product sign, U+220F ISOamsb
''∑'' => ''∑'', # n-ary sumation, U+2211 ISOamsb
''−'' => ''−'', # minus sign, U+2212 ISOtech
''∗'' => ''∗'', # asterisk operator, U+2217 ISOtech
''√'' => ''√'', # square root = radical sign, U+221A ISOtech
''∝'' => ''∝'', # proportional to, U+221D ISOtech
''∞'' => ''∞'', # infinity, U+221E ISOtech
''∠'' => ''∠'', # angle, U+2220 ISOamso
''∧'' => ''∧'', # logical and = wedge, U+2227 ISOtech
''∨'' => ''∨'', # logical or = vee, U+2228 ISOtech
''∩'' => ''∩'', # intersection = cap, U+2229 ISOtech
''∪'' => ''∪'', # union = cup, U+222A ISOtech
''∫'' => ''∫'', # integral, U+222B ISOtech
''∴'' => ''∴'', # therefore, U+2234 ISOtech
''∼'' => ''∼'', # tilde operator = varies with = similar to, U+223C ISOtech
''≅'' => ''≅'', # approximately equal to, U+2245 ISOtech
''≈'' => ''≈'', # almost equal to = asymptotic to, U+2248 ISOamsr
''≠'' => ''≠'', # not equal to, U+2260 ISOtech
''≡'' => ''≡'', # identical to, U+2261 ISOtech
''≤'' => ''≤'', # less-than or equal to, U+2264 ISOtech
''≥'' => ''≥'', # greater-than or equal to, U+2265 ISOtech
''⊂'' => ''⊂'', # subset of, U+2282 ISOtech
''⊃'' => ''⊃'', # superset of, U+2283 ISOtech
''⊄'' => ''⊄'', # not a subset of, U+2284 ISOamsn
''⊆'' => ''⊆'', # subset of or equal to, U+2286 ISOtech
''⊇'' => ''⊇'', # superset of or equal to, U+2287 ISOtech
''⊕'' => ''⊕'', # circled plus = direct sum, U+2295 ISOamsb
''⊗'' => ''⊗'', # circled times = vector product, U+2297 ISOamsb
''⊥'' => ''⊥'', # up tack = orthogonal to = perpendicular, U+22A5 ISOtech
''⋅'' => ''⋅'', # dot operator, U+22C5 ISOamsb
''⌈'' => ''⌈'', # left ceiling = apl upstile, U+2308 ISOamsc
''⌉'' => ''⌉'', # right ceiling, U+2309 ISOamsc
''⌊'' => ''⌊'', # left floor = apl downstile, U+230A ISOamsc
''⌋'' => ''⌋'', # right floor, U+230B ISOamsc
''⟨'' => ''〈'', # left-pointing angle bracket = bra, U+2329 ISOtech
''⟩'' => ''〉'', # right-pointing angle bracket = ket, U+232A ISOtech
''◊'' => ''◊'', # lozenge, U+25CA ISOpub
''♠'' => ''♠'', # black spade suit, U+2660 ISOpub
''♣'' => ''♣'', # black club suit = shamrock, U+2663 ISOpub
''♥'' => ''♥'', # black heart suit = valentine, U+2665 ISOpub
''♦'' => ''♦'', # black diamond suit, U+2666 ISOpub
''"'' => ''"'', # quotation mark = APL quote, U+0022 ISOnum
''&'' => ''&'', # ampersand, U+0026 ISOnum
''<'' => ''<'', # less-than sign, U+003C ISOnum
''>'' => ''>'', # greater-than sign, U+003E ISOnum
''Œ'' => ''Œ'', # latin capital ligature OE, U+0152 ISOlat2
''œ'' => ''œ'', # latin small ligature oe, U+0153 ISOlat2
''Š'' => ''Š'', # latin capital letter S with caron, U+0160 ISOlat2
''š'' => ''š'', # latin small letter s with caron, U+0161 ISOlat2
''Ÿ'' => ''Ÿ'', # latin capital letter Y with diaeresis, U+0178 ISOlat2
''ˆ'' => ''ˆ'', # modifier letter circumflex accent, U+02C6 ISOpub
''˜'' => ''˜'', # small tilde, U+02DC ISOdia
'' '' => '' '', # en space, U+2002 ISOpub
'' '' => '' '', # em space, U+2003 ISOpub
'' '' => '' '', # thin space, U+2009 ISOpub
''‌'' => ''‌'', # zero width non-joiner, U+200C NEW RFC 2070
''‍'' => ''‍'', # zero width joiner, U+200D NEW RFC 2070
''‎'' => ''‎'', # left-to-right mark, U+200E NEW RFC 2070
''‏'' => ''‏'', # right-to-left mark, U+200F NEW RFC 2070
''–'' => ''–'', # en dash, U+2013 ISOpub
''—'' => ''—'', # em dash, U+2014 ISOpub
''‘'' => ''‘'', # left single quotation mark, U+2018 ISOnum
''’'' => ''’'', # right single quotation mark, U+2019 ISOnum
''‚'' => ''‚'', # single low-9 quotation mark, U+201A NEW
''“'' => ''“'', # left double quotation mark, U+201C ISOnum
''”'' => ''”'', # right double quotation mark, U+201D ISOnum
''„'' => ''„'', # double low-9 quotation mark, U+201E NEW
''†'' => ''†'', # dagger, U+2020 ISOpub
''‡'' => ''‡'', # double dagger, U+2021 ISOpub
''‰'' => ''‰'', # per mille sign, U+2030 ISOtech
''‹'' => ''‹'', # single left-pointing angle quotation mark, U+2039 ISO proposed
''›'' => ''›'', # single right-pointing angle quotation mark, U+203A ISO proposed
''€'' => ''€'', # euro sign, U+20AC NEW
);
Y el de XHTML:
''''' => ''''', # apostrophe = APL quote, U+0027 ISOnum
¿Existe una función PHP para convertir entidades HTML con nombre en sus respectivas entidades HTML numéricas?
Por ejemplo:
$str = "Oggi è un bel giorno";
echo entities_to_unicode($str); // Oggi è un bel giorno
Gracias de antemano, que tengas un buen día!
Primero use html_entity_decode para obtener la versión no codificada de su código fuente. Si es necesario, configure el tercer parámetro (codificación) con el valor adecuado.
Luego use utf8_encode en ese código fuente.
$source_code_without_entities = html_entity_decode($source_code_with_entities);
$utf8_source_code = utf8_encode($source_code_without_entities);
echo preg_replace(''/[^!-%/x27-;=?-~ ]/e'', ''"&#".ord("$0").";"'', html_entity_decode($str))
Esta solución se basa en el código de php.net :
function entities_to_unicode($str) {
$str = html_entity_decode($str, ENT_QUOTES, ''UTF-8'');
$str = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $str);
return $str;
}
$str = ''Oggi è un bel giorno'';
echo entities_to_unicode($str);
Éste
- no requiere enumeración de entidades en el código del usuario,
- funciona en código HTML que contiene entidades con nombre (grosero aplicar html_entity_decode a toda la cadena desordena <y> (convertido & lt; y & gt;) y etiqueta HTML inicio / final):
Aquí está
function htmlent2xml($s) {
return preg_replace_callback("/(&[a-zA-Z][a-zA-Z0-9];)/",function($m){
$c = html_entity_decode($m[0],ENT_HTML5,"UTF-8");
return htmlentities($c,ENT_XML1,"UTF-8");
},$s);
}