note 70910 added to function.preg-match-all

From: Date: Fri, 03 Nov 2006 21:10:24 +0000
Subject: note 70910 added to function.preg-match-all
Groups: php.notes 
Request: Send a blank email to php-notes+get-119350@lists.php.net to get a copy of this message
Here's something I made awhile ago to colorize long regular expressions. I can't guarantee it'll work for everything/everyone, but it helps me a lot and might help someone else. Usage: <?php echo highlight_regexp("/^[0-9]{2}:[0-9]{2}[apAP]$/"); ?> <?php function highlight_regexp($pattern) { $colors = array( "/" => "red", "(" => "green", ")" => "green", "[" => "blue", "]" => "blue", "{" => "orange", "}" => "orange" ); $specialchars = array("?","+","*",".","|"); $space = "&nbsp; &nbsp; "; for ($i = 0; $i < strlen($pattern); $i++) { unset($spacing); if ($skip) { $show = 1; $skip = 0; } else switch ($pattern{$i}) { case "/": case "(": case "[": case "{": if ($skip) { $show = 1; $skip = 0; } else { $tier++; if ($pattern{$i} == "/") $tier = 0; for ($j = 0; $j < $tier; $j++) $spacing .= $space; $pattern{$i} == "{" or $return .= "<br>$spacing"; $return .= "<font color=".$colors[$pattern{$i}]."><b>".$pattern{$i}."</b></font>"; if ($pattern{$i} == "(") $spaceover = "<br>$spacing$space"; else { if ($pattern{$i} == "[") $inbrackets = 1; unset($spaceover); } } $show = 0; break; case ")": case "]": case "}": if ($skip) { $show = 1; $skip = 0; } else { for ($j = 0; $j < $tier; $j++) $spacing .= $space; if ($pattern{$i} == ")") $return .= "<br>$spacing"; elseif ($pattern{$i} == "]") $inbrackets = 0; $return .= "<font color=".$colors[$pattern{$i}]."><b>".$pattern{$i}."</b></font>\n"; $spaceover = "<br>$spacing"; $tier--; } $show = 0; break; default: $show = 1; break; } if ($show) { if (!$inbrackets && in_array($pattern{$i},$specialchars)) { $skipspaceover = 1 ; $preextra = "<font style='font-weight:bold;color:red'>"; $postextra = "</font>"; $replace = ""; } elseif ($pattern{$i} == " ") { $preextra = "<i style='font-size:10px'>"; $replace = "(space)"; $postextra = "</i>"; } else $preextra = $postextra = $replace = $skipspaceover = ""; if ($spaceover && !$skipspaceover) { $return .= $spaceover; unset($spaceover); } $return .= $preextra.($replace ? $replace : $pattern{$i}).$postextra; } } return $return; } ?> ---- Server IP: 216.194.113.175 Probable Submitter: 64.146.132.115 ---- Manual Page -- http://www.php.net/manual/en/function.preg-match-all.php Edit -- https://master.php.net/note/edit/70910 Del: integrated -- https://master.php.net/note/delete/70910/integrated Del: useless -- https://master.php.net/note/delete/70910/useless Del: bad code -- https://master.php.net/note/delete/70910/bad+code Del: spam -- https://master.php.net/note/delete/70910/spam Del: non-english -- https://master.php.net/note/delete/70910/non-english Del: in docs -- https://master.php.net/note/delete/70910/in+docs Del: other reasons-- https://master.php.net/note/delete/70910 Reject -- https://master.php.net/note/reject/70910 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#119350) next »