encode/decodeXMLEntities

From: Date: Tue, 04 Nov 2003 10:42:56 +0000
Subject: encode/decodeXMLEntities
Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-23224@lists.php.net to get a copy of this message
Followup - This works for me: Modification of XML/Tree/Node.php function encodeXmlEntities($xml)
    {
        $chrs      = chr(0).chr(1).chr(2).chr(3).chr(4).chr(5).chr(6).chr(7).chr(8).chr(9).
chr(10).chr(11).chr(12).chr(13).chr(14).chr(15).chr(16).chr(17).chr(18).chr(19). chr(20).chr(21).chr(22).chr(23).chr(24).chr(25).chr(26).chr(27).chr(28).chr(29).
                      chr(30).chr(31).chr(34).chr(38).
                      chr(60).chr(62).
                      chr(127).chr(128).chr(129).
chr(130).chr(131).chr(132).chr(133).chr(134).chr(135).chr(136).chr(137).chr(138).chr(139). chr(140).chr(141).chr(142).chr(143).chr(144).chr(145).chr(146).chr(147).chr(148).chr(149). chr(150).chr(151).chr(152).chr(153).chr(154).chr(155).chr(156).chr(157).chr(158).chr(159). chr(160).chr(161).chr(162).chr(163).chr(164).chr(165).chr(166).chr(167).chr(168).chr(169). chr(170).chr(171).chr(172).chr(173).chr(174).chr(175).chr(176).chr(177).chr(178).chr(179). chr(180).chr(181).chr(182).chr(183).chr(184).chr(185).chr(186).chr(187).chr(188).chr(189). chr(190).chr(191).chr(192).chr(193).chr(194).chr(195).chr(196).chr(197).chr(198).chr(199). chr(200).chr(201).chr(202).chr(203).chr(204).chr(205).chr(206).chr(207).chr(208).chr(209). chr(210).chr(211).chr(212).chr(213).chr(214).chr(215).chr(216).chr(217).chr(218).chr(219). chr(220).chr(221).chr(222).chr(223).chr(224).chr(225).chr(226).chr(227).chr(228).chr(229). chr(230).chr(231).chr(232).chr(233).chr(234).chr(235).chr(236).chr(237).chr(238).chr(239). chr(240).chr(241).chr(242).chr(243).chr(244).chr(245).chr(246).chr(247).chr(248).chr(249). chr(250).chr(251).chr(252).chr(253).chr(254).chr(255); $repchrs=array('�','','','','','','','','','	', '
','','','
','','','','','','', '','','','','','','','','','',
                       '','','"','&',
                       '<','>',
                       '','€','',
'‚','ƒ','„','…','†','‡','ˆ','‰','Š','‹', 'Œ','','Ž','','','‘','’','“','”','•', '–','—','˜','™','š','›','œ','','ž','Ÿ', ' ','¡','¢','£','¤','¥','¦','§','¨','©', 'ª','«','¬','­','®','¯','°','±','²','³', '´','µ','¶','·','¸','¹','º','»','¼','½', '¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç', 'È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ', 'Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û', 'Ü','Ý','Þ','ß','à','á','â','ã','ä','å', 'æ','ç','è','é','ê','ë','ì','í','î','ï', 'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù', 'ú','û','ü','ý','þ','ÿ');
        $newstr="";
        for ($i=0; $i<strlen($xml); $i++)
        {
           // substring is character safe with mbstring overloading...
           $c=substr($xml,$i,1);
           $x=strpos($chrs,$c);  // this is broken if the double-byte character is a sequence in the above array
                                 // any suggestions?  can I check if only one byte long?  how?
           if ($x===false) $newstr.=$c; else $newstr.=$repchrs[$x];
        }
        return $newstr;
    }
But I need help finishing... Any way to speed this up? Seems like a slow way to do it...but...may be the only way... And...need to fix a the bug noted above... I tried to be clever doing strpos...but...think I may need to change my mind and scan an array myself.. any help?

« previous php.pear.dev (#23224) next »