|  | Posted by Jerry Stuckle on 02/25/07 13:43 
Curtis wrote:> 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
 
 Yep, you're right - I misread the question.  Sorry.
 
 --
 ==================
 Remove the "x" from my email address
 Jerry Stuckle
 JDS Computer Training Corp.
 jstucklex@attglobal.net
 ==================
  Navigation: [Reply to this message] |