Home  |  Linux  | Mysql  | PHP  | XML
From:Aschwin Wesselius Date:Wed May  7 15:11:13 2008
Subject:Re: Regex to catch <p>s
Ryan S wrote:
> Hey!
>
> Thansk for replying!
>
> <clip>
> It is obvious I haven't had my caffeine yet. This is my last try to 
> get the pattern straight:
>
> <?php
>
> $html = <<<END_OF_HTML
>
> <b>hello</b>
> <b class="blah">hello</b>
> <p>those</p>
> <p class="blah">hello</p>
> <a>hello</a>
> <a href="url">this</a>
> <a>rose</a>
> <a href="regex yo">hello</a>
> <a>nose</a>
> <a id="2" href="regex yo">hello</a>
> <p>that</p>
> <p class="blah" title="whatever">hello</p>
> END_OF_HTML;
>
> $tags = array();
> $tags[] = 'p';
> $tags[] = 'a';
>
> $attr = array();
> $attr[] = 'class';
> $attr[] = 'href';
>
> $vals = array();
> $vals[] = 'blah';
> $vals[] = 'url';
> $vals[] = 'yo';
>
> $text = array();
> $text[] = 'hello';
> $text[] = 'this';
> $text[] = 'that';
>
> $tags = implode('|', $tags);
> $attr = implode('|', $attr);
> $vals = implode('|', $vals);
> $text = implode('|', $text);
>
> $pattern = 
> '/<('.$tags.')[^>]*('.$attr.')?[^>]*('.$vals.')?[^>]*>('.$text.')[^<\/]*<\/\1>/i';
>
> echo $pattern."\n";
> echo "--------------------\n";
>
> preg_match_all($pattern, $html, $matches);
>
> var_dump($matches);
>
> ?>
> </clip>
>
> I dont get why you added this
> $tags[] = 'a';
>
> Does that mean I will have to make tags like that for all the html 
> tags that i think will be on the page?

Hi,

I said before that the example could be a little bit overkill, but it 
gives a quick example how to find any tag(s) given, with any 
attribute(s) given and with any text given in between the opening and 
closing tag.

And yes, it might be incomplete or maybe not even accurate, but it does 
give you a headstart on your solution. There always will be people who 
will give you a shorter, cleaner, more beautiful example, but I hope 
that it was helpful for you or will be helpful for someone else.

Cheers,

Aschwin Wesselius


Navigate in group php.general at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by Zareef Ahmed
Powered By PHP Consultants