Re: preg_match_all - how does it work?

From: Date: Sun, 17 Nov 2002 17:09:08 +0000
Subject: Re: preg_match_all - how does it work?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-124802@lists.php.net to get a copy of this message
That was my understanding. Question is, why don't my print commands work...or...how do you access 2 dimensional arrays in php? > Hi Randall, > > If you look closely at the definition of preg_match_all(), you'll see > that it generates an array of arrays--that's because, for each match, it > generates an array that corresponds to the result of a single call to > preg_match, then puts all the resulting array into another array. > > If you use PREG_SET_ORDER, your $match array contains an array for each > of the matches found. Each array then contains: > > * The entire matched string in element 0 > * Each of the substring (defined in brackets in your pattern) starting > from array 1. > > Hope this helps! > > > Marco > -- > ------------ > php|architect - The magazine for PHP Professionals > The first monthly worldwide magazine dedicated to PHP programmers > Check us out on the web at http://www.phparch.com > > > On Sun, 2002-11-17 at 11:13, Randall Perry wrote: >> I have some experience in using regular expressions in Perl, and have been >> able to use preg_match in php, but am having a problem with preg_match_all. >> >> I'm trying to extract data from an HTML table. Here's my preg_match call >> that correctly grabs the 1st row of data in the table. It grabs 4 columns of >> data: >> >> preg_match("|<tr >> >> class=\"CART_TD_REG\".+?<td.+?>(.*?)<.+?<td.+?>(.*?)<.+?<td.+?>(.*?)<.*?<inp >> ut.*?>[&nbsp;]*(.*?)</td>.*?</tr>|", $res, $match); >> >> If I use preg_match_all on the same table: >> preg_match_all("|<tr >> >> class=\"CART_TD_REG\".+?<td.+?>(.*?)<.+?<td.+?>(.*?)<.+?<td.+?>(.*?)<.*?<inp >> ut.*?>[&nbsp;]*(.*?)</td>.*?</tr>|", $res, $match, >> PREG_PATTERN_ORDER); >> >> ...and try to print output, I get: >> >> $match[0] = Array >> $match[0][0] = Array[0] >> $match[1][0] = Array[0] >> $match[0][1] = Array[0] >> $match[1][1] = Array[0] >> >> >> Same result with PREG_SETORDER. >> >> What am I doing wrong? >> >> -- >> Randall Perry >> sysTame >> >> Xserve Web Hosting/Co-location >> Website Development/Promotion >> Mac Consulting/Sales >> >> http://www.systame.com/ >> >> >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > -- Randall Perry sysTame Xserve Web Hosting/Co-location Website Development/Promotion Mac Consulting/Sales http://www.systame.com/

« previous php.general (#124802) next »