Reply to Re: Regex for balanced brackets?

Your name:

Reply:


Posted by Al on 11/22/05 18:34

Jeffrey Sambells wrote:
> I came across this method of matching brackets with regex in .NET
>
> http://puzzleware.net/blogs/archive/2005/08/13/22.aspx
>
> but I am wondering if it is possible to do the same in PHP?
>
> I've tried it a bit but I can't seem to get it to work properly. I'm
> just wondering if I am doing something wrong or if it is just not
> possible.
>
> Thanks.
>
> here is the code I was playing with:
>
> <?php
>
> $pattern = <<<PATTERN
> \{
> (?>
> [^{}]+
> |
> \{ (?P<DEPTH>)
> |
> \} (?P<-DEPTH>)
> )*
> (?(DEPTH)(?!))
>
> \}
> PATTERN;
>
> $subject = <<<SUBJECT
> test {
> test2 {
> test3
> }
> }
>
> test4
> {
>
> }
> SUBJECT;
>
>
> preg_match_all("/$pattern/ix",$subject,$matches);
>
> header("content-type: text/plain; ");
>
> var_dump($matches);
>
> ?>
>
>
> - Jeff
>
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Jeffrey Sambells
> Director of Research and Development
> Zend Certified Engineer (ZCE)
>
> We-Create Inc.
> jeff@wecreate.com email
> 519.745.7374 office
> 519.897.2552 mobile
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Get Mozilla Firefox at
> http://spreadfirefox.com

If I'm understanding what you want, consider this. I use it to check matching tags.

First get an array of all the start tags:

$pattern= "%<([^/][a-z_\-]*)>%i"; //all start tags used <xxx>

preg_match_all("$pattern", $text_str, $matches);

$start_tags= $matches[1];

$start_tag_nums= array_count_values($start_tags); //get count for each tag

Then do the same for your end tags, using the same pattern but with the end tag slash. </....

Finally, you make a text list of the mismatches:

foreach($start_tag_nums as $tag=> $num){

if($num != $end_tag_nums[$tag]) $end_error_msg .= "&lt;$tag&gt; || ";

}//end foreach

echo $end_error_msg;

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация