Hello all,

For a while I tried in vain to find a decent regular expression tester. The closest I 
found 
was RegExpEditor, by the same people who produce PHPEdit, but I found it to be slow 
and didn't like its constant bitching about "invalid delimiters" or some such thing.

Anyway, I ended up writing a little tester for Perl-compatible regular expressions and 
thought I'd share it with you. Maybe it'll come in handy to people who often need to 
use 
regular expressions in their projects. Just copy the code below the dotted line (which 
has Unix line breaks) and save it to a file.

Cheers,

Erik

--------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Regular Expression Tester</title>
<?php( isset($_POST['text']) && isset($_POST['regexp']) )
        {
        $error = false;
        if($_POST['mode'] == 'one')
                {
                if( @preg_match('/'.$_POST['regexp'].'/', $_POST['text'], $matches) 
=== 
false )
                        {
                        $error = true;
                        }
                }
        else
                {
                if( @preg_match_all('/'.$_POST['regexp'].'/', $_POST['text'], 
$matches) 
=== false )
                        {
                        $error = true;
                        }
                }
        }
?>
</head>
<body style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" 
enctype="multipart/form-data">
<table width="750">
<tr>
<td width="135"><div align="right">Regular expression:</div></td>
<td width="591">
<input name="regexp" type="text" size="87" 
<?php if( isset($_POST['regexp']) ) {print 'value="'.$_POST['regexp'].'"';} ?>
/>
</td>
</tr>
<tr>
<td width="135"><div align="right">Text:</div></td>
<td width="591">
<textarea name="text" rows="6" cols="65">
<?php if( isset($_POST['text']) ) {print $_POST['text'];} ?>
</textarea>
</td>
</tr>
<tr>
<td width="135"><div align="right">Mode:</div></td>
<td width="591">
<select name="mode">
<option value="one"
<?php( isset($_POST['mode']) && $_POST['mode'] == 'one' )
        {
        print 'selected';
        } 
?>
>First match</option>
<option value="all"
<?php( isset($_POST['mode']) && $_POST['mode'] == 'all' )
        {
        print 'selected';
        } 
?>
>All matches</option>
</select>
</td>
</tr>
<tr>
 <td width="135">&nbsp;</td>
 <td>    <input type="submit" value="RUN TEST"/>
&nbsp;&nbsp;&nbsp;
<input type="reset" value="CLEAR FORM"/></td>
</tr>
</table>
</form>
<p/>
<div style="background-color:#000000; color:#FFFFFF;">
<table width="750" border="10" bordercolor="#000000">
<?php($error)
        {
        exit('<tr><td><span style="color: lime; font-weight: bold;">'.
                 'Invalid regular expression!</span></td></tr>');
        }
( isset($matches) && !empty($matches[0]) )
        {
        print '<tr><td colspan="2" style="font-weight:bold;">Full 
match(es):</td></tr>'.
                  '<tr><td colspan="2">&nbsp;</td></tr>';

        if( !is_array($matches[0]) )
                {
                print '<tr>'.
                          '<td width="25" style="font-weight: bold;">1</td>'."\n".
                          '<td>'.htmlentities($matches[0]).'</td>'.
                          '<tr/>';
                }
        else
                {
                foreach($matches[0] as $key => $val)
                        {
                        print '<td width="25" style="font-weight: bold;">'.($key+1).
                                  '</td>'."\n".'<td>'.htmlentities($val).'</td>'."\n".
                                  '</tr>';
                        }
                }
        }
        {
        print '<tr><td><span style="color: lime; font-weight: bold;">'.
                  'No matches found.</span></td></tr>';
        }
( isset($matches[1]) && !empty($matches[1]) )
        {
        print '<tr width="100%"><td colspan="2">&nbsp;</td></tr>'.
                  '<tr width="100%"><td colspan="2"><hr/></td></tr>'.
                  '<tr width="100%"><td colspan="2">&nbsp;</td></tr>'.
                  '<tr width="100%"><td colspan="2" style="font-weight:bold;">'.
                  'Sub-pattern match(es):</td></tr>'.
                  '<tr width="100%"><td colspan="2">&nbsp;</td></tr>';
        for($i = 1; $i < count($matches); $i++)
                {
                if( !is_array($matches[$i]) )
                        {
                        print '<tr width="100%">'.
                                  '<td width="25" style="font-weight: 
bold;">'.$i.'</td>'."\n".
                                  '<td>'.htmlentities($matches[$i]).'</td>'.
                                  '</tr>';
                        }
                else
                        {
                        foreach($matches[$i] as $key => $val)
                                {
                                print '<tr width="100%">'.
                                          '<td width="25" style="font-weight: 
bold;">'.$i.'.'.($key+1).
                                          
'</td>'."\n".'<td>'.htmlentities($val).'</td>'."\n".
                                          '</tr>';
                                }
                        }
                if( isset($matches[$i+1]) )
                        {
                        print '<tr width="100%"><td colspan="2">&nbsp;</td></tr>';
                        }
                }
        }
?>
</table>
</div>
</body>
</html>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to