Skip to content

Instantly share code, notes, and snippets.

@seigieu
Created June 12, 2018 09:23
Show Gist options
  • Save seigieu/b212044ac1ae10dd1d033b7da6b0427b to your computer and use it in GitHub Desktop.
Save seigieu/b212044ac1ae10dd1d033b7da6b0427b to your computer and use it in GitHub Desktop.
<?php
/*
For CMSMadeSimple CMS Platform
This file is a fix for https://forum.cmsmadesimple.org/viewtopic.php?f=3&t=71067
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in lib/html_entity_decode_utf8.php on line 38
*/
//============================================================+
// File name : html_entity_decode_php4.php
// Begin : 2006-06-22
// Last Update : 2006-06-22
// Author : Nicola Asuni
// Version : 1.0.000
// License : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
//
// Description : This is a PHP4 function that redefine the
// standard html_entity_decode function to support
// UTF-8 encoding.
//
//============================================================+
/**
* TCPDF Class.
* @package com.tecnick.tcpdf
*/
/**
* Returns the UTF-8 string corresponding to unicode value.
*
* @ignore
* @param $num unicode value to convert.
* @return string converted
*/
function code_to_utf8($num) {
if ($num <= 0x7F) {
return chr($num);
} elseif ($num <= 0x7FF) {
return chr(($num >> 0x06) + 0xC0).chr(($num & 0x3F) + 128);
} elseif ($num <= 0xFFFF) {
return chr(($num >> 0x0C) + 0xE0).chr((($num >> 0x06) & 0x3F) + 0x80).chr(($num & 0x3F) + 0x80);
} elseif ($num <= 0x1FFFFF) {
return chr(($num >> 0x12) + 0xF0).chr((($num >> 0x0C) & 0x3F) + 0x80).chr((($num >> 0x06) & 0x3F) + 0x80).chr(($num & 0x3F) + 0x80);
}
return ' '; // default value
}
/**
* Reverse function for htmlentities.
* Convert entities in UTF-8.
*
* @param $text_to_convert Text to convert.
* @return string converted
*/
//function html_entity_decode_php4($text_to_convert) {
function cms_html_entity_decode($text_to_convert) {
$htmlentities_table = array (
"&Aacute;" => "".chr(195).chr(129)."",
"&aacute;" => "".chr(195).chr(161)."",
"&Acirc;" => "".chr(195).chr(130)."",
"&acirc;" => "".chr(195).chr(162)."",
"&acute;" => "".chr(194).chr(180)."",
"&AElig;" => "".chr(195).chr(134)."",
"&aelig;" => "".chr(195).chr(166)."",
"&Agrave;" => "".chr(195).chr(128)."",
"&agrave;" => "".chr(195).chr(160)."",
"&alefsym;" => "".chr(226).chr(132).chr(181)."",
"&Alpha;" => "".chr(206).chr(145)."",
"&alpha;" => "".chr(206).chr(177)."",
"&amp;" => "".chr(38)."",
"&and;" => "".chr(226).chr(136).chr(167)."",
"&ang;" => "".chr(226).chr(136).chr(160)."",
"&Aring;" => "".chr(195).chr(133)."",
"&aring;" => "".chr(195).chr(165)."",
"&asymp;" => "".chr(226).chr(137).chr(136)."",
"&Atilde;" => "".chr(195).chr(131)."",
"&atilde;" => "".chr(195).chr(163)."",
"&Auml;" => "".chr(195).chr(132)."",
"&auml;" => "".chr(195).chr(164)."",
"&bdquo;" => "".chr(226).chr(128).chr(158)."",
"&Beta;" => "".chr(206).chr(146)."",
"&beta;" => "".chr(206).chr(178)."",
"&brvbar;" => "".chr(194).chr(166)."",
"&bull;" => "".chr(226).chr(128).chr(162)."",
"&cap;" => "".chr(226).chr(136).chr(169)."",
"&Ccedil;" => "".chr(195).chr(135)."",
"&ccedil;" => "".chr(195).chr(167)."",
"&cedil;" => "".chr(194).chr(184)."",
"&cent;" => "".chr(194).chr(162)."",
"&Chi;" => "".chr(206).chr(167)."",
"&chi;" => "".chr(207).chr(135)."",
"&circ;" => "".chr(203).chr(134)."",
"&clubs;" => "".chr(226).chr(153).chr(163)."",
"&cong;" => "".chr(226).chr(137).chr(133)."",
"&copy;" => "".chr(194).chr(169)."",
"&crarr;" => "".chr(226).chr(134).chr(181)."",
"&cup;" => "".chr(226).chr(136).chr(170)."",
"&curren;" => "".chr(194).chr(164)."",
"&dagger;" => "".chr(226).chr(128).chr(160)."",
"&Dagger;" => "".chr(226).chr(128).chr(161)."",
"&darr;" => "".chr(226).chr(134).chr(147)."",
"&dArr;" => "".chr(226).chr(135).chr(147)."",
"&deg;" => "".chr(194).chr(176)."",
"&Delta;" => "".chr(206).chr(148)."",
"&delta;" => "".chr(206).chr(180)."",
"&diams;" => "".chr(226).chr(153).chr(166)."",
"&divide;" => "".chr(195).chr(183)."",
"&Eacute;" => "".chr(195).chr(137)."",
"&eacute;" => "".chr(195).chr(169)."",
"&Ecirc;" => "".chr(195).chr(138)."",
"&ecirc;" => "".chr(195).chr(170)."",
"&Egrave;" => "".chr(195).chr(136)."",
"&egrave;" => "".chr(195).chr(168)."",
"&empty;" => "".chr(226).chr(136).chr(133)."",
"&emsp;" => "".chr(226).chr(128).chr(131)."",
"&ensp;" => "".chr(226).chr(128).chr(130)."",
"&Epsilon;" => "".chr(206).chr(149)."",
"&epsilon;" => "".chr(206).chr(181)."",
"&equiv;" => "".chr(226).chr(137).chr(161)."",
"&Eta;" => "".chr(206).chr(151)."",
"&eta;" => "".chr(206).chr(183)."",
"&ETH;" => "".chr(195).chr(144)."",
"&eth;" => "".chr(195).chr(176)."",
"&Euml;" => "".chr(195).chr(139)."",
"&euml;" => "".chr(195).chr(171)."",
"&euro;" => "".chr(226).chr(130).chr(172)."",
"&exist;" => "".chr(226).chr(136).chr(131)."",
"&fnof;" => "".chr(198).chr(146)."",
"&forall;" => "".chr(226).chr(136).chr(128)."",
"&frac12;" => "".chr(194).chr(189)."",
"&frac14;" => "".chr(194).chr(188)."",
"&frac34;" => "".chr(194).chr(190)."",
"&frasl;" => "".chr(226).chr(129).chr(132)."",
"&Gamma;" => "".chr(206).chr(147)."",
"&gamma;" => "".chr(206).chr(179)."",
"&ge;" => "".chr(226).chr(137).chr(165)."",
"&harr;" => "".chr(226).chr(134).chr(148)."",
"&hArr;" => "".chr(226).chr(135).chr(148)."",
"&hearts;" => "".chr(226).chr(153).chr(165)."",
"&hellip;" => "".chr(226).chr(128).chr(166)."",
"&Iacute;" => "".chr(195).chr(141)."",
"&iacute;" => "".chr(195).chr(173)."",
"&Icirc;" => "".chr(195).chr(142)."",
"&icirc;" => "".chr(195).chr(174)."",
"&iexcl;" => "".chr(194).chr(161)."",
"&Igrave;" => "".chr(195).chr(140)."",
"&igrave;" => "".chr(195).chr(172)."",
"&image;" => "".chr(226).chr(132).chr(145)."",
"&infin;" => "".chr(226).chr(136).chr(158)."",
"&int;" => "".chr(226).chr(136).chr(171)."",
"&Iota;" => "".chr(206).chr(153)."",
"&iota;" => "".chr(206).chr(185)."",
"&iquest;" => "".chr(194).chr(191)."",
"&isin;" => "".chr(226).chr(136).chr(136)."",
"&Iuml;" => "".chr(195).chr(143)."",
"&iuml;" => "".chr(195).chr(175)."",
"&Kappa;" => "".chr(206).chr(154)."",
"&kappa;" => "".chr(206).chr(186)."",
"&Lambda;" => "".chr(206).chr(155)."",
"&lambda;" => "".chr(206).chr(187)."",
"&lang;" => "".chr(226).chr(140).chr(169)."",
"&laquo;" => "".chr(194).chr(171)."",
"&larr;" => "".chr(226).chr(134).chr(144)."",
"&lArr;" => "".chr(226).chr(135).chr(144)."",
"&lceil;" => "".chr(226).chr(140).chr(136)."",
"&ldquo;" => "".chr(226).chr(128).chr(156)."",
"&le;" => "".chr(226).chr(137).chr(164)."",
"&lfloor;" => "".chr(226).chr(140).chr(138)."",
"&lowast;" => "".chr(226).chr(136).chr(151)."",
"&loz;" => "".chr(226).chr(151).chr(138)."",
"&lrm;" => "".chr(226).chr(128).chr(142)."",
"&lsaquo;" => "".chr(226).chr(128).chr(185)."",
"&lsquo;" => "".chr(226).chr(128).chr(152)."",
"&macr;" => "".chr(194).chr(175)."",
"&mdash;" => "".chr(226).chr(128).chr(148)."",
"&micro;" => "".chr(194).chr(181)."",
"&middot;" => "".chr(194).chr(183)."",
"&minus;" => "".chr(226).chr(136).chr(146)."",
"&Mu;" => "".chr(206).chr(156)."",
"&mu;" => "".chr(206).chr(188)."",
"&nabla;" => "".chr(226).chr(136).chr(135)."",
"&nbsp;" => "".chr(194).chr(160)."",
"&ndash;" => "".chr(226).chr(128).chr(147)."",
"&ne;" => "".chr(226).chr(137).chr(160)."",
"&ni;" => "".chr(226).chr(136).chr(139)."",
"&not;" => "".chr(194).chr(172)."",
"&notin;" => "".chr(226).chr(136).chr(137)."",
"&nsub;" => "".chr(226).chr(138).chr(132)."",
"&Ntilde;" => "".chr(195).chr(145)."",
"&ntilde;" => "".chr(195).chr(177)."",
"&Nu;" => "".chr(206).chr(157)."",
"&nu;" => "".chr(206).chr(189)."",
"&Oacute;" => "".chr(195).chr(147)."",
"&oacute;" => "".chr(195).chr(179)."",
"&Ocirc;" => "".chr(195).chr(148)."",
"&ocirc;" => "".chr(195).chr(180)."",
"&OElig;" => "".chr(197).chr(146)."",
"&oelig;" => "".chr(197).chr(147)."",
"&Ograve;" => "".chr(195).chr(146)."",
"&ograve;" => "".chr(195).chr(178)."",
"&oline;" => "".chr(226).chr(128).chr(190)."",
"&Omega;" => "".chr(206).chr(169)."",
"&omega;" => "".chr(207).chr(137)."",
"&Omicron;" => "".chr(206).chr(159)."",
"&omicron;" => "".chr(206).chr(191)."",
"&oplus;" => "".chr(226).chr(138).chr(149)."",
"&or;" => "".chr(226).chr(136).chr(168)."",
"&ordf;" => "".chr(194).chr(170)."",
"&ordm;" => "".chr(194).chr(186)."",
"&Oslash;" => "".chr(195).chr(152)."",
"&oslash;" => "".chr(195).chr(184)."",
"&Otilde;" => "".chr(195).chr(149)."",
"&otilde;" => "".chr(195).chr(181)."",
"&otimes;" => "".chr(226).chr(138).chr(151)."",
"&Ouml;" => "".chr(195).chr(150)."",
"&ouml;" => "".chr(195).chr(182)."",
"&para;" => "".chr(194).chr(182)."",
"&part;" => "".chr(226).chr(136).chr(130)."",
"&permil;" => "".chr(226).chr(128).chr(176)."",
"&perp;" => "".chr(226).chr(138).chr(165)."",
"&Phi;" => "".chr(206).chr(166)."",
"&phi;" => "".chr(207).chr(134)."",
"&Pi;" => "".chr(206).chr(160)."",
"&pi;" => "".chr(207).chr(128)."",
"&piv;" => "".chr(207).chr(150)."",
"&plusmn;" => "".chr(194).chr(177)."",
"&pound;" => "".chr(194).chr(163)."",
"&prime;" => "".chr(226).chr(128).chr(178)."",
"&Prime;" => "".chr(226).chr(128).chr(179)."",
"&prod;" => "".chr(226).chr(136).chr(143)."",
"&prop;" => "".chr(226).chr(136).chr(157)."",
"&Psi;" => "".chr(206).chr(168)."",
"&psi;" => "".chr(207).chr(136)."",
"&radic;" => "".chr(226).chr(136).chr(154)."",
"&rang;" => "".chr(226).chr(140).chr(170)."",
"&raquo;" => "".chr(194).chr(187)."",
"&rarr;" => "".chr(226).chr(134).chr(146)."",
"&rArr;" => "".chr(226).chr(135).chr(146)."",
"&rceil;" => "".chr(226).chr(140).chr(137)."",
"&rdquo;" => "".chr(226).chr(128).chr(157)."",
"&real;" => "".chr(226).chr(132).chr(156)."",
"&reg;" => "".chr(194).chr(174)."",
"&rfloor;" => "".chr(226).chr(140).chr(139)."",
"&Rho;" => "".chr(206).chr(161)."",
"&rho;" => "".chr(207).chr(129)."",
"&rlm;" => "".chr(226).chr(128).chr(143)."",
"&rsaquo;" => "".chr(226).chr(128).chr(186)."",
"&rsquo;" => "".chr(226).chr(128).chr(153)."",
"&sbquo;" => "".chr(226).chr(128).chr(154)."",
"&Scaron;" => "".chr(197).chr(160)."",
"&scaron;" => "".chr(197).chr(161)."",
"&sdot;" => "".chr(226).chr(139).chr(133)."",
"&sect;" => "".chr(194).chr(167)."",
"&shy;" => "".chr(194).chr(173)."",
"&Sigma;" => "".chr(206).chr(163)."",
"&sigma;" => "".chr(207).chr(131)."",
"&sigmaf;" => "".chr(207).chr(130)."",
"&sim;" => "".chr(226).chr(136).chr(188)."",
"&spades;" => "".chr(226).chr(153).chr(160)."",
"&sub;" => "".chr(226).chr(138).chr(130)."",
"&sube;" => "".chr(226).chr(138).chr(134)."",
"&sum;" => "".chr(226).chr(136).chr(145)."",
"&sup1;" => "".chr(194).chr(185)."",
"&sup2;" => "".chr(194).chr(178)."",
"&sup3;" => "".chr(194).chr(179)."",
"&sup;" => "".chr(226).chr(138).chr(131)."",
"&supe;" => "".chr(226).chr(138).chr(135)."",
"&szlig;" => "".chr(195).chr(159)."",
"&Tau;" => "".chr(206).chr(164)."",
"&tau;" => "".chr(207).chr(132)."",
"&there4;" => "".chr(226).chr(136).chr(180)."",
"&Theta;" => "".chr(206).chr(152)."",
"&theta;" => "".chr(206).chr(184)."",
"&thetasym;" => "".chr(207).chr(145)."",
"&thinsp;" => "".chr(226).chr(128).chr(137)."",
"&THORN;" => "".chr(195).chr(158)."",
"&thorn;" => "".chr(195).chr(190)."",
"&tilde;" => "".chr(203).chr(156)."",
"&times;" => "".chr(195).chr(151)."",
"&trade;" => "".chr(226).chr(132).chr(162)."",
"&Uacute;" => "".chr(195).chr(154)."",
"&uacute;" => "".chr(195).chr(186)."",
"&uarr;" => "".chr(226).chr(134).chr(145)."",
"&uArr;" => "".chr(226).chr(135).chr(145)."",
"&Ucirc;" => "".chr(195).chr(155)."",
"&ucirc;" => "".chr(195).chr(187)."",
"&Ugrave;" => "".chr(195).chr(153)."",
"&ugrave;" => "".chr(195).chr(185)."",
"&uml;" => "".chr(194).chr(168)."",
"&upsih;" => "".chr(207).chr(146)."",
"&Upsilon;" => "".chr(206).chr(165)."",
"&upsilon;" => "".chr(207).chr(133)."",
"&Uuml;" => "".chr(195).chr(156)."",
"&uuml;" => "".chr(195).chr(188)."",
"&weierp;" => "".chr(226).chr(132).chr(152)."",
"&Xi;" => "".chr(206).chr(158)."",
"&xi;" => "".chr(206).chr(190)."",
"&Yacute;" => "".chr(195).chr(157)."",
"&yacute;" => "".chr(195).chr(189)."",
"&yen;" => "".chr(194).chr(165)."",
"&yuml;" => "".chr(195).chr(191)."",
"&Yuml;" => "".chr(197).chr(184)."",
"&Zeta;" => "".chr(206).chr(150)."",
"&zeta;" => "".chr(206).chr(182)."",
"&zwj;" => "".chr(226).chr(128).chr(141)."",
"&zwnj;" => "".chr(226).chr(128).chr(140)."",
"&quot;" => '"',
"&gt;" => ">",
"&lt;" => "<"
);
$return_text = strtr($text_to_convert, $htmlentities_table);
// $return_text = preg_replace('~&#x([0-9a-f]+);~ei', 'code_to_utf8(hexdec("\\1"))', $return_text);
// $return_text = preg_replace('~&#([0-9]+);~e', 'code_to_utf8("\\1")', $return_text);
$return_text = preg_replace_callback('~&#x([0-9a-f]+);~i', function($m){ return code_to_utf8(hexdec($m[1]));}, $return_text);
$return_text = preg_replace_callback('~&#([0-9]+);~', function($m){ return code_to_utf8($m[1]);}, $return_text);
return $return_text;
}
//============================================================+
// END OF FILE
//============================================================+
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment