. // // See LICENSE.TXT file for more information. // ---------------------------------------------------------------------------- // // // Description : This is a PHP4 function that redefine the // standard html_entity_decode function to support // UTF-8 encoding. // // // Author: Nicola Asuni // // (c) Copyright: // Nicola Asuni // Tecnick.com S.r.l. // Via della Pace, 11 // 09044 Quartucciu (CA) // ITALY // www.tecnick.com // info@tecnick.com //============================================================+ /** * This is a PHP4 function that redefine the standard * html_entity_decode function to support UTF-8 encoding. * @package com.tecnick.tcpdf * @author Nicola Asuni * @copyright 2004-2009 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com * @link http://www.tcpdf.org * @license http://www.gnu.org/copyleft/lesser.html LGPL */ /** * Returns the UTF-8 string corresponding to unicode value. * @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) { $htmlentities_table = array ( 'Á' => ''.chr(195).chr(129).'', 'á' => ''.chr(195).chr(161).'', 'Â' => ''.chr(195).chr(130).'', 'â' => ''.chr(195).chr(162).'', '´' => ''.chr(194).chr(180).'', 'Æ' => ''.chr(195).chr(134).'', 'æ' => ''.chr(195).chr(166).'', 'À' => ''.chr(195).chr(128).'', 'à' => ''.chr(195).chr(160).'', 'ℵ' => ''.chr(226).chr(132).chr(181).'', 'Α' => ''.chr(206).chr(145).'', 'α' => ''.chr(206).chr(177).'', '&' => ''.chr(38).'', '∧' => ''.chr(226).chr(136).chr(167).'', '∠' => ''.chr(226).chr(136).chr(160).'', 'Å' => ''.chr(195).chr(133).'', 'å' => ''.chr(195).chr(165).'', '≈' => ''.chr(226).chr(137).chr(136).'', 'Ã' => ''.chr(195).chr(131).'', 'ã' => ''.chr(195).chr(163).'', 'Ä' => ''.chr(195).chr(132).'', 'ä' => ''.chr(195).chr(164).'', '„' => ''.chr(226).chr(128).chr(158).'', 'Β' => ''.chr(206).chr(146).'', 'β' => ''.chr(206).chr(178).'', '¦' => ''.chr(194).chr(166).'', '•' => ''.chr(226).chr(128).chr(162).'', '∩' => ''.chr(226).chr(136).chr(169).'', 'Ç' => ''.chr(195).chr(135).'', 'ç' => ''.chr(195).chr(167).'', '¸' => ''.chr(194).chr(184).'', '¢' => ''.chr(194).chr(162).'', 'Χ' => ''.chr(206).chr(167).'', 'χ' => ''.chr(207).chr(135).'', 'ˆ' => ''.chr(203).chr(134).'', '♣' => ''.chr(226).chr(153).chr(163).'', '≅' => ''.chr(226).chr(137).chr(133).'', '©' => ''.chr(194).chr(169).'', '↵' => ''.chr(226).chr(134).chr(181).'', '∪' => ''.chr(226).chr(136).chr(170).'', '¤' => ''.chr(194).chr(164).'', '†' => ''.chr(226).chr(128).chr(160).'', '‡' => ''.chr(226).chr(128).chr(161).'', '↓' => ''.chr(226).chr(134).chr(147).'', '⇓' => ''.chr(226).chr(135).chr(147).'', '°' => ''.chr(194).chr(176).'', 'Δ' => ''.chr(206).chr(148).'', 'δ' => ''.chr(206).chr(180).'', '♦' => ''.chr(226).chr(153).chr(166).'', '÷' => ''.chr(195).chr(183).'', 'É' => ''.chr(195).chr(137).'', 'é' => ''.chr(195).chr(169).'', 'Ê' => ''.chr(195).chr(138).'', 'ê' => ''.chr(195).chr(170).'', 'È' => ''.chr(195).chr(136).'', 'è' => ''.chr(195).chr(168).'', '∅' => ''.chr(226).chr(136).chr(133).'', ' ' => ''.chr(226).chr(128).chr(131).'', ' ' => ''.chr(226).chr(128).chr(130).'', 'Ε' => ''.chr(206).chr(149).'', 'ε' => ''.chr(206).chr(181).'', '≡' => ''.chr(226).chr(137).chr(161).'', 'Η' => ''.chr(206).chr(151).'', 'η' => ''.chr(206).chr(183).'', 'Ð' => ''.chr(195).chr(144).'', 'ð' => ''.chr(195).chr(176).'', 'Ë' => ''.chr(195).chr(139).'', 'ë' => ''.chr(195).chr(171).'', '€' => ''.chr(226).chr(130).chr(172).'', '∃' => ''.chr(226).chr(136).chr(131).'', 'ƒ' => ''.chr(198).chr(146).'', '∀' => ''.chr(226).chr(136).chr(128).'', '½' => ''.chr(194).chr(189).'', '¼' => ''.chr(194).chr(188).'', '¾' => ''.chr(194).chr(190).'', '⁄' => ''.chr(226).chr(129).chr(132).'', 'Γ' => ''.chr(206).chr(147).'', 'γ' => ''.chr(206).chr(179).'', '≥' => ''.chr(226).chr(137).chr(165).'', '↔' => ''.chr(226).chr(134).chr(148).'', '⇔' => ''.chr(226).chr(135).chr(148).'', '♥' => ''.chr(226).chr(153).chr(165).'', '…' => ''.chr(226).chr(128).chr(166).'', 'Í' => ''.chr(195).chr(141).'', 'í' => ''.chr(195).chr(173).'', 'Î' => ''.chr(195).chr(142).'', 'î' => ''.chr(195).chr(174).'', '¡' => ''.chr(194).chr(161).'', 'Ì' => ''.chr(195).chr(140).'', 'ì' => ''.chr(195).chr(172).'', 'ℑ' => ''.chr(226).chr(132).chr(145).'', '∞' => ''.chr(226).chr(136).chr(158).'', '∫' => ''.chr(226).chr(136).chr(171).'', 'Ι' => ''.chr(206).chr(153).'', 'ι' => ''.chr(206).chr(185).'', '¿' => ''.chr(194).chr(191).'', '∈' => ''.chr(226).chr(136).chr(136).'', 'Ï' => ''.chr(195).chr(143).'', 'ï' => ''.chr(195).chr(175).'', 'Κ' => ''.chr(206).chr(154).'', 'κ' => ''.chr(206).chr(186).'', 'Λ' => ''.chr(206).chr(155).'', 'λ' => ''.chr(206).chr(187).'', '⟨' => ''.chr(226).chr(140).chr(169).'', '«' => ''.chr(194).chr(171).'', '←' => ''.chr(226).chr(134).chr(144).'', '⇐' => ''.chr(226).chr(135).chr(144).'', '⌈' => ''.chr(226).chr(140).chr(136).'', '“' => ''.chr(226).chr(128).chr(156).'', '≤' => ''.chr(226).chr(137).chr(164).'', '⌊' => ''.chr(226).chr(140).chr(138).'', '∗' => ''.chr(226).chr(136).chr(151).'', '◊' => ''.chr(226).chr(151).chr(138).'', '‎' => ''.chr(226).chr(128).chr(142).'', '‹' => ''.chr(226).chr(128).chr(185).'', '‘' => ''.chr(226).chr(128).chr(152).'', '¯' => ''.chr(194).chr(175).'', '—' => ''.chr(226).chr(128).chr(148).'', 'µ' => ''.chr(194).chr(181).'', '·' => ''.chr(194).chr(183).'', '−' => ''.chr(226).chr(136).chr(146).'', 'Μ' => ''.chr(206).chr(156).'', 'μ' => ''.chr(206).chr(188).'', '∇' => ''.chr(226).chr(136).chr(135).'', ' ' => ''.chr(194).chr(160).'', '–' => ''.chr(226).chr(128).chr(147).'', '≠' => ''.chr(226).chr(137).chr(160).'', '∋' => ''.chr(226).chr(136).chr(139).'', '¬' => ''.chr(194).chr(172).'', '∉' => ''.chr(226).chr(136).chr(137).'', '⊄' => ''.chr(226).chr(138).chr(132).'', 'Ñ' => ''.chr(195).chr(145).'', 'ñ' => ''.chr(195).chr(177).'', 'Ν' => ''.chr(206).chr(157).'', 'ν' => ''.chr(206).chr(189).'', 'Ó' => ''.chr(195).chr(147).'', 'ó' => ''.chr(195).chr(179).'', 'Ô' => ''.chr(195).chr(148).'', 'ô' => ''.chr(195).chr(180).'', 'Œ' => ''.chr(197).chr(146).'', 'œ' => ''.chr(197).chr(147).'', 'Ò' => ''.chr(195).chr(146).'', 'ò' => ''.chr(195).chr(178).'', '‾' => ''.chr(226).chr(128).chr(190).'', 'Ω' => ''.chr(206).chr(169).'', 'ω' => ''.chr(207).chr(137).'', 'Ο' => ''.chr(206).chr(159).'', 'ο' => ''.chr(206).chr(191).'', '⊕' => ''.chr(226).chr(138).chr(149).'', '∨' => ''.chr(226).chr(136).chr(168).'', 'ª' => ''.chr(194).chr(170).'', 'º' => ''.chr(194).chr(186).'', 'Ø' => ''.chr(195).chr(152).'', 'ø' => ''.chr(195).chr(184).'', 'Õ' => ''.chr(195).chr(149).'', 'õ' => ''.chr(195).chr(181).'', '⊗' => ''.chr(226).chr(138).chr(151).'', 'Ö' => ''.chr(195).chr(150).'', 'ö' => ''.chr(195).chr(182).'', '¶' => ''.chr(194).chr(182).'', '∂' => ''.chr(226).chr(136).chr(130).'', '‰' => ''.chr(226).chr(128).chr(176).'', '⊥' => ''.chr(226).chr(138).chr(165).'', 'Φ' => ''.chr(206).chr(166).'', 'φ' => ''.chr(207).chr(134).'', 'Π' => ''.chr(206).chr(160).'', 'π' => ''.chr(207).chr(128).'', 'ϖ' => ''.chr(207).chr(150).'', '±' => ''.chr(194).chr(177).'', '£' => ''.chr(194).chr(163).'', '′' => ''.chr(226).chr(128).chr(178).'', '″' => ''.chr(226).chr(128).chr(179).'', '∏' => ''.chr(226).chr(136).chr(143).'', '∝' => ''.chr(226).chr(136).chr(157).'', 'Ψ' => ''.chr(206).chr(168).'', 'ψ' => ''.chr(207).chr(136).'', '√' => ''.chr(226).chr(136).chr(154).'', '⟩' => ''.chr(226).chr(140).chr(170).'', '»' => ''.chr(194).chr(187).'', '→' => ''.chr(226).chr(134).chr(146).'', '⇒' => ''.chr(226).chr(135).chr(146).'', '⌉' => ''.chr(226).chr(140).chr(137).'', '”' => ''.chr(226).chr(128).chr(157).'', 'ℜ' => ''.chr(226).chr(132).chr(156).'', '®' => ''.chr(194).chr(174).'', '⌋' => ''.chr(226).chr(140).chr(139).'', 'Ρ' => ''.chr(206).chr(161).'', 'ρ' => ''.chr(207).chr(129).'', '‏' => ''.chr(226).chr(128).chr(143).'', '›' => ''.chr(226).chr(128).chr(186).'', '’' => ''.chr(226).chr(128).chr(153).'', '‚' => ''.chr(226).chr(128).chr(154).'', 'Š' => ''.chr(197).chr(160).'', 'š' => ''.chr(197).chr(161).'', '⋅' => ''.chr(226).chr(139).chr(133).'', '§' => ''.chr(194).chr(167).'', '­' => ''.chr(194).chr(173).'', 'Σ' => ''.chr(206).chr(163).'', 'σ' => ''.chr(207).chr(131).'', 'ς' => ''.chr(207).chr(130).'', '∼' => ''.chr(226).chr(136).chr(188).'', '♠' => ''.chr(226).chr(153).chr(160).'', '⊂' => ''.chr(226).chr(138).chr(130).'', '⊆' => ''.chr(226).chr(138).chr(134).'', '∑' => ''.chr(226).chr(136).chr(145).'', '¹' => ''.chr(194).chr(185).'', '²' => ''.chr(194).chr(178).'', '³' => ''.chr(194).chr(179).'', '⊃' => ''.chr(226).chr(138).chr(131).'', '⊇' => ''.chr(226).chr(138).chr(135).'', 'ß' => ''.chr(195).chr(159).'', 'Τ' => ''.chr(206).chr(164).'', 'τ' => ''.chr(207).chr(132).'', '∴' => ''.chr(226).chr(136).chr(180).'', 'Θ' => ''.chr(206).chr(152).'', 'θ' => ''.chr(206).chr(184).'', 'ϑ' => ''.chr(207).chr(145).'', ' ' => ''.chr(226).chr(128).chr(137).'', 'Þ' => ''.chr(195).chr(158).'', 'þ' => ''.chr(195).chr(190).'', '˜' => ''.chr(203).chr(156).'', '×' => ''.chr(195).chr(151).'', '™' => ''.chr(226).chr(132).chr(162).'', 'Ú' => ''.chr(195).chr(154).'', 'ú' => ''.chr(195).chr(186).'', '↑' => ''.chr(226).chr(134).chr(145).'', '⇑' => ''.chr(226).chr(135).chr(145).'', 'Û' => ''.chr(195).chr(155).'', 'û' => ''.chr(195).chr(187).'', 'Ù' => ''.chr(195).chr(153).'', 'ù' => ''.chr(195).chr(185).'', '¨' => ''.chr(194).chr(168).'', 'ϒ' => ''.chr(207).chr(146).'', 'Υ' => ''.chr(206).chr(165).'', 'υ' => ''.chr(207).chr(133).'', 'Ü' => ''.chr(195).chr(156).'', 'ü' => ''.chr(195).chr(188).'', '℘' => ''.chr(226).chr(132).chr(152).'', 'Ξ' => ''.chr(206).chr(158).'', 'ξ' => ''.chr(206).chr(190).'', 'Ý' => ''.chr(195).chr(157).'', 'ý' => ''.chr(195).chr(189).'', '¥' => ''.chr(194).chr(165).'', 'ÿ' => ''.chr(195).chr(191).'', 'Ÿ' => ''.chr(197).chr(184).'', 'Ζ' => ''.chr(206).chr(150).'', 'ζ' => ''.chr(206).chr(182).'', '‍' => ''.chr(226).chr(128).chr(141).'', '‌' => ''.chr(226).chr(128).chr(140).'', '>' => '>', '<' => '<' ); $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 $return_text; } //============================================================+ // END OF FILE //============================================================+ ?>