encode/decodeXMLEntities
| From: | James Barwick | 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?