[nycphp-talk] Problem with xml_parse_into_struct
Mark Armendariz
nyphp at enobrev.com
Thu Jan 30 03:01:36 EST 2003
Well, I realize this isn't the most elegant solution, but it worked for
me:
$tags = array('b', 'br', 'i', 'p');
$ok_tags = array();
$ok_replaced = array();
foreach($tags as $tag) {
$ok_tags[] = '<' . $tag . '>';
$ok_tags[] = '</' . $tag . '>';
$ok_replaced[] = '<' . $tag . '>';
$ok_replaced[] = '</' . $tag . '>';
}
$data = str_replace($ok_tags, $ok_replaced, $data);
$parser = xml_parser_create('ISO-8859-1');
xml_parse_into_struct($parser , $data, $values, $index);
// etc, etc...
I know it doesn't help for xhtml style tags (<br />, etc) nor does it do
much for tags with attributes (img, etc), but if it's just the basics,
it does the trick...
-----Original Message-----
From: Phil Powell [mailto:soazine at erols.com]
Sent: Thursday, January 30, 2003 1:57 AM
To: NYPHP Talk
Subject: [nycphp-talk] Problem with xml_parse_into_struct
I have various XML files that might contain <> tags inside the element
body, for example:
<news id="1" shortDescription="Stuff Happened Today">Today on
<b>1/29/03</b>, stuff happened</news>
Because of this I can't use xml_parse_into_struct; when I do this
happens:
array (
...
[attributes] => array (
[ID] = "1"
[SHORTDESCRIPTION] = "Stuff Happened
Today"
)
[values] = "Today on"
)
and it stops right there on the <b> tag.
What I need to do is this: Clean out ALL occurrences of <tags> that are
NOT part of the original XML structure from the contents read from the
XML file:
$fileID = fopen('/phil/xml/news.xml', 'r') or die('Could not open XML');
$stuff = fread($fileID, filesize('/phil/xml/news.xml'));
fclose($fileID);
$stuff contains the contents of news.xml, so I would have to do my
cleanup in $stuff, BUT.. I can't use preg_replace for tags because then
ALL of my tags would be altered and xml_parse_into_struct would fail
altogether.
How then do I make sure to ONLY remove the <trash tags> from each XML
row body and nowhere else???
Thanx
Phil
--- Unsubscribe at http://nyphp.org/list/ ---
More information about the talk
mailing list