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].
EXAMPLE:
$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);
print_r($matches_new);
EXPLANATION:
(?<=Purpose<p>)
- 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>'.
(?=<\/p>)
- forward looking assertion. Read as: "Expression immediately prior must
match only strings with "</p>" immediately after."
Hope this helps.
Laurence
"Kathy A Wright" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
>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 (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php