Do it with one preg_match operation, like so:

preg_match("/(?<=Purpose<p>).+?(?=<\/p>)/", $fpRead, $matches_new);

Your string will reside in $matches_new[0].


   $fpRead = "blah blah Purpose<p>This is the string you are after</p> blah 
blah <p>blah blah blah</p>";
   preg_match("/(?<=Purpose<p>).+?(?=<\/p>)/", $fpRead, $matches_new);


- backward looking assertion. Read as: "Expression immediately following 
must match only strings with "Purpose<p>" immediately before."

- any character, 1 or more, ungreedy. Ungreedy because otherwise it will 
match right up to the last possible place it can. You want it to match up 
until the next '</p>', not the last '</p>'.

- forward looking assertion. Read as: "Expression immediately prior must 
match only strings with "</p>" immediately after."

Hope this helps.

"Kathy A Wright" <[EMAIL PROTECTED]> wrote in message 
>I am trying to get a string of text in an html page using preg_match. The
> text starts after the Purpose</p> tag and ends before the next </p> tag.
> When using preg_match it captures the first </p> tag on the page and not
> the one after my starting point.
> Here is my starting point:
> preg_match("/Purpose\<\/p\>/i", $fpRead, $matches_new)
> Here is my ending point:
> preg_match("/<(\/p)>/s", $fpRead,$m_new);
> I have also tried using offset
> preg_match("/<(\/p)>/s", $fpRead,$m_new, $matches_new[0]);
> Does anyone have any suggestions?     I also don't know if my syntax is
> correct for the string </p>...
> Thanks
> Any help will be appreciated.
> Kathy
> Kathy A Wright | Keane Inc. | Suite:
> Outside: 617-517-1706 | E-mail: [EMAIL PROTECTED]
> [ Mailing: 100 City Sq.  Charlestown, MA 02129 USA ]

PHP Database Mailing List (
To unsubscribe, visit:

Reply via email to