Reply to Re: How to parse Xml?

Your name:

Reply:


Posted by Erwin Moller on 08/06/07 19:00

php.developer2007@gmail.com wrote:
> On Aug 6, 9:06 pm, Benjamin <musiccomposit...@gmail.com> wrote:
>> On Aug 6, 9:44 am, php.developer2...@gmail.com wrote:
>>
>>
>>
>>
>>
>>> Hi i want to parse a xml document which contains attribute can anybody
>>> help me in that.
>>> Example
>>> --------------------
>>> <category id="1" parent-id="1" level="2">
>>> <category id="2" parent-id="1" level="3">
>>> <category id="3" parent-id="5" level="6">
>>> I want to get all id's in this example with using regular
>>> expressions..
>>> Output
>>> ----------
>>> 1
>>> 2
>>> 3
>> First of all that's not valid XML. In order to parse it, it has to be
>> valid. This, however, is easily fixed in your case. Just put the whole
>> body in <categories> tags and add the XML declaration like this:
>> <?xml version="1.0"?>
>> <categories>
>> <category id="1" parent-id="1" level="2">
>> <category id="2" parent-id="1" level="3">
>> <category id="3" parent-id="5" level="6">
>> </categories>
>>
>> With PHP, you have many options to parse XML with. My favorite and
>> probably the most easy is SimpleXML. Look athttp://www.php.net/simplexml.- Hide quoted text -
>>
>> - Show quoted text -
>
> Yeah I know i m just giving an example.I want it to be done with
> preg_match_all as i had done this before with it.help if any body
> help.I m facing problem this time.
>

Hi,

If you want to do it with regexpressions, you could try something like this.
Please note I do it in 2 steps, simply because I suck at regexp to do it
in 1 step.

Normally I do not respond to regexpression questions, because of the
abovementioned reason, but since you need it quickly, here it comes.

I tried with 'look behind' and 'look ahead' but of course that didn't
suceed in my case. :P

<?php

// get your data in a var. Just an example
$var='<category id="031" parent-id="1" level="2">\n<category id="233"
parent-id="1" level="3">\n<category id="31" parent-id="5" level="6">';

$expr = '/\ id="[0-9]+"/';

preg_match_all($expr,$var,$results);

echo "<pre>";
print_r($results);
echo "</pre>";

// results now contain an array with [0] => id="031" , [1] =>
id="233", [2] => id="31"
$allresultsStr = implode("",$results[0]) ;

// get the numbers out
preg_match_all('/[0-9]+/',$allresultsStr,$results2);


echo "<pre>";
print_r($results2);
echo "</pre>";

?>

Regards,
Erwin Moller

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация