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

Reply via email to