| 
	
 | 
 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
 
  
Navigation:
[Reply to this message] 
 |