NYCPHP Meetup

NYPHP.org

[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[] 	= '&lt;' . $tag . '&gt;';
  $ok_replaced[] 	= '&lt;/' . $tag . '&gt;';
}
		
$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