Also, make sure that you make the match "ungreedy" with the U modifier, or use: (.*?)
James "Niklas lampén" wrote in message 000501c1d0aa$4a5d97f0$ba93c5c3@Niklas">news:000501c1d0aa$4a5d97f0$ba93c5c3@Niklas... > preg_match_all(); > > > Niklas > > -----Original Message----- > From: Stefen Lars [mailto:[EMAIL PROTECTED]] > Sent: 21. maaliskuuta 2002 7:28 > To: [EMAIL PROTECTED] > Subject: [PHP] Returning mutliple matches of a regex with preg_match() > > > Hello all > > I have been scratching my head for the last two days about this regular > expression problem. I would be really VERY happy if someone could help > me! > > I have the following text in the file 'text.htm', for example: > > -- > > <BLOCKQUOTE><P> > Cow, Cow, Cow, Cow, Cow > Cow, Cow, Cow, Cow, Cow > Cow, Cow, Cow, Cow, Cow > a lot of lines > </P></BLOCKQUOTE> > > <p>boring stuff - we are not interested in this....</p> > > <BLOCKQUOTE><P> > Chicken, Chicken, Chicken > Chicken, Chicken, Chicken > Chicken, Chicken, Chicken > more lines > </P></BLOCKQUOTE> > > <p>more boring stuff - we are not interested in this....</p> > > <BLOCKQUOTE><P> > Rabbit, Rabbit, Rabbit, Rabbit > > </P></BLOCKQUOTE> > > <p>even more boring stuff - we are not interested in this....</p> > > <BLOCKQUOTE><P> > Pig, Pig, Pig, Pig, Pig > </P></BLOCKQUOTE> > > -- > > I want to return all the stuff between <BLOCKQUOTE><P> ... > </P></BLOCKQUOTE> > in an array. One element per match. For example, for the above text, I > would > like to get back an array back like this: > > array( > "Cow, Cow, Cow, Cow, Cow Cow, Cow, Cow, Cow, Cow Cow, Cow, Cow, > Cow, Cow a > lot of lines", > "Chicken, Chicken, Chicken Chicken, Chicken, Chicken Chicken, > Chicken, > Chicken more lines", > "Rabbit, Rabbit, Rabbit, Rabbit", > "Pig, Pig, Pig, Pig, Pig" > ) > > I have been trying to do this with (many variations of) the following > code: > > -- > > <?PHP > > // open file > $fd = fopen ("./text.htm", "r"); > > // load contents into a variable > while (!feof ($fd)) > { > $content .= fgets($fd, 4096); > } > > // close file > fclose ($fd); > > // remove char returns and co. > $content = preg_replace("/(\r\n)|(\n\r)|(\n|\r)/", " ",$content); > > // match agains regex -- this does not work correctly.... > if > (preg_match("/<BLOCKQUOTE><P>(.*)<\/P><\/BLOCKQUOTE>/i",$content,$matche > s)) > { > echo "<pre>"; > var_dump($matches); > echo "</pre>"; > } > > ?> > > -- > > For the above, var_dump() returns this: > > -- > > array(2) { > [0]=> > string(556) "<BLOCKQUOTE><P> Cow, Cow, Cow, Cow, Cow Cow, Cow, Cow, > Cow, > Cow Cow, Cow, Cow, Cow, Cow a lot of lines </P></BLOCKQUOTE> <p>boring > stuff - we are not interested in this....</p> <BLOCKQUOTE><P> Chicken, > Chicken, Chicken Chicken, Chicken, Chicken Chicken, Chicken, Chicken > more > lines </P></BLOCKQUOTE> <p>more boring stuff - we are not interested in > > this....</p> <BLOCKQUOTE><P> Rabbit, Rabbit, Rabbit, Rabbit > </P></BLOCKQUOTE> <p>even more boring stuff - we are not interested in > this....</p> <BLOCKQUOTE><P> Pig, Pig, Pig, Pig, Pig </P></BLOCKQUOTE>" > [1]=> > string(524) " Cow, Cow, Cow, Cow, Cow Cow, Cow, Cow, Cow, Cow Cow, > Cow, > Cow, Cow, Cow a lot of lines </P></BLOCKQUOTE> <p>boring stuff - we are > not > interested in this....</p> <BLOCKQUOTE><P> Chicken, Chicken, Chicken > Chicken, Chicken, Chicken Chicken, Chicken, Chicken more lines > </P></BLOCKQUOTE> <p>more boring stuff - we are not interested in > this....</p> <BLOCKQUOTE><P> Rabbit, Rabbit, Rabbit, Rabbit > </P></BLOCKQUOTE> <p>even more boring stuff - we are not interested in > this....</p> <BLOCKQUOTE><P> Pig, Pig, Pig, Pig, Pig " > } > > -- > > Clearly not what I want. > > Is my approach here incorrect? Or is it indeed possible to construct a > regex > to do what I want (with just one pass of the text)? > > Thank you in advance. > > :-)) > > S. > > > > > > > _________________________________________________________________ > Send and receive Hotmail on your mobile device: http://mobile.msn.com > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php