Jerry Stuckle wrote:
Quote:
Peter Parker wrote:
Quote:
>preg_match("/<some_tag >([^']*?)<\/some_tag>/", $data, $matches)
>preg_match_all("/<p>(.*?)<\/p>/", $matches[1], $paragraphs);
>>
>foreach ($paragraphs[0] as $paragraph) {
> $content=$content.$paragraph;
> }
>>
>The above code only works if <pis the first tag under <some_tag>.
>i.e, works with
>>
><some_tag >
> <p>blah</p>
> </some_tag>
>>
>but not with
>>
><some_tag >
> <some_other_tag>blah</some_other_tag>
> <p>blah</p>
></some_tag>
>>
>>
>How could I make the code works regardless of the position of <p>
>under <some_tag>? Thank you.
>>
>>
>
Try alt.html. This isn't a PHP problem.
>
How is it not a PHP problem? The OP is asking about using regex in PHP.
Anyway, @OP: You might be able to get what you're after with one
regex. Check out the print_r output to figure out what you need, and
if it works:
$data = '<div>Foo bar <p><em>baz</em></pIshmael</div>';
// use a different delimiter when / occurs, to avoid
// unnecessary escaping
$re = '%<([\w.:-]+)[^<>]*>(.*?<p[^<>]*>(.*?)</p>.*?)</\1>%i';
preg_match_all($re, $data, $matches);
print_r($matches);
--
Curtis,
http://dyersweb.com