PHP: convert named entities to decimal Unicode

MyEgo.cz

home foto blogy mywindows.cz kontakt

PHP: convert named entities to decimal Unicode

PHP 10.11.04

This script was written to overcome validation problems with RSS 0.9/1.0/2.0 and Atom 0.3 feeds which may not contain (X)HTML entities, otherwise widely used. Usage is very simple, function entity_to_decimal_value() will return a Unicode encoded string, with entities it does not recognise replaced for spaces.

There are also other two useful functions, for converting (X)HTML entities back to their original representation (makes &lt; again <), and for Unicode decoding of an URL string.

/* convert HTML entities back */
function unhtmlentities ($string)  {
  $trans_tbl = get_html_translation_table (HTML_ENTITIES);
  $trans_tbl = array_flip ($trans_tbl);
  return strtr ($string, $trans_tbl);
}
 
/* decodes URL into Unicode string */
function unicode_decode($txt) {
  $txt = ereg_replace('%u0([[:alnum:]]{3})', '&#x\1;',$txt);
  $txt = ereg_replace('%([[:alnum:]]{2})', '&#x\1;',$txt);
  return urldecode($txt);
}
/* entity to unicode decimal value */
function entity_to_decimal_value($string){
 
  $entity_to_decimal = array(
	'&#160;' => '&#160;',
	'&#161;' => '&#161;',
	'&#162;' => '&#162;',
	'&#163;' => '&#163;',
	'&#164;' => '&#164;',
	'&#165;' => '&#165;',
	'&#166;' => '&#166;',
	'&#167;' => '&#167;',
	'&#168;' => '&#168;',
	'&#169;' => '&#169;',
	'&#170;' => '&#170;',
	'&#171;' => '&#171;',
	'&#172;' => '&#172;',
	'&#173;' => '&#173;',
	'&#174;' => '&#174;',
	'&#175;' => '&#175;',
	'&#176;' => '&#176;',
	'&#177;' => '&#177;',
	'&#38;sup2;' => '&#178;',
	'&#38;sup3;' => '&#179;',
	'&#180;' => '&#180;',
	'&#181;' => '&#181;',
	'&#182;' => '&#182;',
	'&#183;' => '&#183;',
	'&#184;' => '&#184;',
	'&#38;sup1;' => '&#185;',
	'&#186;' => '&#186;',
	'&#187;' => '&#187;',
	'&#38;frac14;' => '&#188;',
	'&#38;frac12;' => '&#189;',
	'&#38;frac34;' => '&#190;',
	'&#191;' => '&#191;',
	'&#192;' => '&#192;',
	'&#193;' => '&#193;',
	'&#194;' => '&#194;',
	'&#195;' => '&#195;',
	'&#196;' => '&#196;',
	'&#197;' => '&#197;',
	'&#38;AElig;' => '&#198;',
	'&#199;' => '&#199;',
	'&#200;' => '&#200;',
	'&#201;' => '&#201;',
	'&#202;' => '&#202;',
	'&#203;' => '&#203;',
	'&#204;' => '&#204;',
	'&#205;' => '&#205;',
	'&#206;' => '&#206;',
	'&#207;' => '&#207;',	
	'&#38;ETH;' => '&#208;',
	'&#209;' => '&#209;', 	
	'&#210;' => '&#210;',	
	'&#211;' => '&#211;', 	
	'&#212;' => '&#212;',
	'&#213;' => '&#213;',	
	'&#214;' => '&#214;',
	'&#215;' => '&#215;',	
	'&#216;' => '&#216;',	
	'&#217;' => '&#217;',	
	'&#218;' => '&#218;',	
	'&#219;' => '&#219;',
	'&#220;' => '&#220;',
	'&#221;' => '&#221;', 	
	'&#38;THORN;' => '&#222;',
	'&#223;' => '&#223;',	
	'&#224;' => '&#224;',	
	'&#225;' => '&#225;',	
	'&#226;' => '&#226;',
	'&#227;' => '&#227;',	
	'&#228;' => '&#228;', 	
	'&#229;' => '&#229;',	
	'&#230;' => '&#230;',	
	'&#231;' => '&#231;',	
	'&#232;' => '&#232;',	
	'&#233;' => '&#233;',	
	'&#234;' => '&#234;',
	'&#235;' => '&#235;',
	'&#236;' => '&#236;', 	
	'&#237;' => '&#237;',	
	'&#238;' => '&#238;',
	'&#239;' => '&#239;',
	'&#240;' => '&#240;',
	'&#241;' => '&#241;', 	
	'&#242;' => '&#242;',	
	'&#243;' => '&#243;',	
	'&#244;' => '&#244;',
	'&#245;' => '&#245;',	
	'&#246;' => '&#246;',
	'&#247;' => '&#247;', 	
	'&#248;' => '&#248;',	
	'&#249;' => '&#249;',	
	'&#250;' => '&#250;',	
	'&#251;' => '&#251;',
	'&#252;' => '&#252;',
	'&#253;' => '&#253;', 	
	'&#254;' => '&#254;',
	'&#255;' => '&#255;',
	'&#402;' => '&#402;',
	'&#913;' => '&#913;',	
	'&#914;' => '&#914;',
	'&#915;' => '&#915;',	
	'&#916;' => '&#916;',	
	'&#917;' => '&#917;', 	
	'&#918;' => '&#918;',
	'&#919;' => '&#919;',
	'&#920;' => '&#920;', 	
	'&#921;' => '&#921;',
	'&#922;' => '&#922;',	
	'&#923;' => '&#923;',	
	'&#924;' => '&#924;',
	'&#925;' => '&#925;',	
	'&#926;' => '&#926;',	
	'&#927;' => '&#927;', 	
	'&#928;' => '&#928;',
	'&#929;' => '&#929;',	
	'&#931;' => '&#931;', 	
	'&#932;' => '&#932;',
	'&#933;' => '&#933;', 	
	'&#934;' => '&#934;',
	'&#935;' => '&#935;',
	'&#936;' => '&#936;',
	'&#937;' => '&#937;', 	
	'&#945;' => '&#945;',	
	'&#946;' => '&#946;',
	'&#947;' => '&#947;',	
	'&#948;' => '&#948;',	
	'&#949;' => '&#949;',	 	
	'&#950;' => '&#950;',
	'&#951;' => '&#951;',
	'&#952;' => '&#952;', 	
	'&#953;' => '&#953;',	
	'&#954;' => '&#954;', 	
	'&#955;' => '&#955;',	
	'&#956;' => '&#956;',
	'&#957;' => '&#957;',	
	'&#958;' => '&#958;',	
	'&#959;' => '&#959;',	 	
	'&#960;' => '&#960;',
	'&#961;' => '&#961;', 	
	'&#962;' => '&#962;',	 	
	'&#963;' => '&#963;',	
	'&#964;' => '&#964;',	
	'&#965;' => '&#965;',	 	
	'&#966;' => '&#966;',
	'&#967;' => '&#967;', 	
	'&#968;' => '&#968;', 	
	'&#969;' => '&#969;', 	
	'&#977;' => '&#977;',	 	
	'&#978;' => '&#978;',
	'&#982;' => '&#982;',	
	'&#8226;' => '&#8226;', 	
	'&#8230;' => '&#8230;',	 	
	'&#8242;' => '&#8242;',
	'&#8243;' => '&#8243;',	
	'&#8254;' => '&#8254;',	
	'&#8260;' => '&#8260;',	
	'&#8472;' => '&#8472;', 	
	'&#8465;' => '&#8465;',
	'&#8476;' => '&#8476;',	
	'&#8482;' => '&#8482;',	
	'&#8501;' => '&#8501;',	 	
	'&#8592;' => '&#8592;',
	'&#8593;' => '&#8593;',	
	'&#8594;' => '&#8594;',	
	'&#8595;' => '&#8595;',	
	'&#8596;' => '&#8596;',	
	'&#8629;' => '&#8629;',	
	'&#38;lArr;' => '&#8656;',	
	'&#38;uArr;' => '&#8657;',	
	'&#38;rArr;' => '&#8658;',	
	'&#38;dArr;' => '&#8659;',	
	'&#38;hArr;' => '&#8660;',	
	'&#8704;' => '&#8704;',	 	
	'&#8706;' => '&#8706;',
	'&#8707;' => '&#8707;',	
	'&#8709;' => '&#8709;',	
	'&#8711;' => '&#8711;',	
	'&#8712;' => '&#8712;',	
	'&#8713;' => '&#8713;',	
	'&#8715;' => '&#8715;',	
	'&#8719;' => '&#8719;', 	
	'&#8721;' => '&#8721;',	
	'&#8722;' => '&#8722;', 	
	'&#8727;' => '&#8727;', 	
	'&#8730;' => '&#8730;',
	'&#8733;' => '&#8733;',	
	'&#8734;' => '&#8734;',	
	'&#8736;' => '&#8736;',	
	'&#8743;' => '&#8743;', 	
	'&#8744;' => '&#8744;', 	
	'&#8745;' => '&#8745;', 	
	'&#8746;' => '&#8746;', 	
	'&#8747;' => '&#8747;', 	
	'&#38;there4;' => '&#8756;',	 	
	'&#8764;' => '&#8764;',
	'&#8773;' => '&#8773;', 	
	'&#8776;' => '&#8776;',	
	'&#8800;' => '&#8800;',	
	'&#8801;' => '&#8801;',	 	
	'&#8804;' => '&#8804;',	
	'&#8805;' => '&#8805;', 	
	'&#8834;' => '&#8834;', 	
	'&#8835;' => '&#8835;', 	
	'&#8836;' => '&#8836;', 	
	'&#8838;' => '&#8838;',	
	'&#8839;' => '&#8839;',	
	'&#8853;' => '&#8853;',	
	'&#8855;' => '&#8855;', 	
	'&#8869;' => '&#8869;',
	'&#8901;' => '&#8901;',	
	'&#8968;' => '&#8968;',	
	'&#8969;' => '&#8969;',	
	'&#8970;' => '&#8970;', 	
	'&#8971;' => '&#8971;', 	
	'&#9001;' => '&#9001;',
	'&#9002;' => '&#9002;',	
	'&#9674;' => '&#9674;',	
	'&#9824;' => '&#9824;',	 	
	'&#9827;' => '&#9827;',
	'&#9829;' => '&#9829;', 	
	'&#9830;' => '&#9830;',
	'&#34;' => '&#34;',	
	'&#38;' => '&#38;',
	'&#60;' => '&#60;',	
	'&#62;' => '&#62;',	
	'&#38;OElig;' => '&#338;',
	'&#339;' => '&#339;',	
	'&#352;' => '&#352;',	
	'&#353;' => '&#353;',	
	'&#376;' => '&#376;',	
	'&#710;' => '&#710;', 	
	'&#732;' => '&#732;', 	
	'&#8194;' => '&#8194;',	
	'&#8195;' => '&#8195;',	
	'&#8201;' => '&#8201;',	 	
	'&#8204;' => '&#8204;',
	'&#8205;' => '&#8205;',
	'&#8206;' => '&#8206;',	
	'&#8207;' => '&#8207;',	
	'&#8211;' => '&#8211;', 	
	'&#8212;' => '&#8212;',	 	
	'&#8216;' => '&#8216;',	
	'&#8217;' => '&#8217;',	
	'&#8218;' => '&#8218;',	
	'&#8220;' => '&#8220;',	
	'&#8221;' => '&#8221;',	
	'&#8222;' => '&#8222;',	
	'&#8224;' => '&#8224;', 	
	'&#8225;' => '&#8225;', 	
	'&#8240;' => '&#8240;', 	
	'&#8249;' => '&#8249;',
	'&#8250;' => '&#8250;',
	'&#8364;' => '&#8364;');
	
  return preg_replace( 
  	"/&#38;[A-Za-z]+;/", 
	" ", 
	strtr($string,$entity_to_decimal) );
	
}

Nový komentář

Pro přidání komentáře se musíte nejdříve  registrovat Facebookem

Banan.cz