note 70910 deleted from function.preg-match-all by felipe

From: Date: Sun, 23 Mar 2008 22:57:48 +0000
Subject: note 70910 deleted from function.preg-match-all by felipe
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-137387@lists.php.net to get a copy of this message
Note Submitter: sam at NOSPAM dot aigc dot net ---- 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; } ?>

« previous php.notes (#137387) next »