|
Posted by Curtis on 02/25/07 10:42
Jerry Stuckle wrote:
> Peter Parker wrote:
>> 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 <p> is 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></p> Ishmael</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
[Back to original message]
|