Re: [PHP] Regex to catch <p>s

[email protected] (Aschwin Wesselius)
Newsgroups php.general
Message-ID <[email protected]>
Aschwin Wesselius wrote:
> Ryan S wrote:
>>  Hey all!
>>
>> To say I suck at regex is an understatement so really need any help I 
>> can get on this, I have a page of text with different html tags in 
>> them, but each "block" of text has a <p> or a < class="something"> 
>> tag... anybody have any regex that will catch each of these 
>> paragraphs and put then into an array
>> example:
>> array[0]="<p> first block </p>";
>> array[1]="<p class="blah">  block X</p>";
>>
>> Thanks!
>> R
>>   
> Hi,
>
> Maybe the example is overkill, but I give you a quick setup that can 
> save you some time finding HTML tags with a certain attribute.

Hi,

I'm sorry. I didn't read your request properly. Below you'll have a 
correct solution:

<?php

$html = <<<END_OF_HTML

<b>hello</b>
<b class="blah">hello</b>
<p>hello</p>
<p class="blah">hello</p>
<a>hello</a>
<a href="url">this</a>
<a>hello</a>
<a href="regex yo">hello</a>
<a>hello</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);

?>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.