[thelist] php regexp help (or some other solution maybe..)

Kelly Hallman khallman at wrack.org
Tue Dec 31 14:27:01 CST 2002


On Tue, 31 Dec 2002, Tom Dell'Aringa wrote:
> At this point I don't have a file. Per your question below, what I
> have is a response from a proprietary DB from an XML query to it. I
> was dumping this response into a file (dump.xml), but the header info
> in the file was of course causing problems (its not a valid XML file
> with the header junk in there).

The reason I was asking about the temporary files is because if you are
simply trying to parse the data you can do it without a single fopen()..

(Assuming, your parser is all set up) Consider this:

<?php
$fname = "http://domain.com/pathtoxml/dump.xml";

list($head,$body) =
    preg_split("/(?=<\?xml)/m", join("",file($fname)), 2);

xml_parse($xmlparser,$body,1);
?>

It loads the XML file (from a URL, or it could be a local file), strips
the header, and feeds the XML data to the parser, without any local file
operations.  If you were working with a 20mb XML file, you might want to
do some benchmarking, but with XML of several hundred Kb, it's probably
six of one half a dozen of the other...

If you needed the temporary files for some other purpose, you might still
approach it with this code, instead of lots of looping over the data..

> I do have a recent version of PHP too, 4.1.2.

Unfortunately, file_get_contents() is apparently PHP 4.3+...
$x = join("",file($fname)) is an easy workaround..

--
Kelly Hallman
http://wrack.org/




More information about the thelist mailing list