ただし、 eregi() は、PHP ereg() 関数の大文字と小文字を無視するバージョンです。どちらも preg_match と同様の関数を持っていますが、この関数は一致が成功したかどうかを示すブール値を返します。 POSIX 拡張ライブラリ関数の最初のパラメータは正規表現文字列を受け入れる、つまり区切り文字は必要ないことに注意してください。たとえば、リスト 6.2 はファイル名のセキュリティをチェックする方法です。
コード 6.2 ファイル名のセキュリティチェック
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">username</span><span> = $_SERVER['REMOTE_USER']; </span></li><li class="alt"><span>$</span><span class="attribute">filename</span><span> = $_GET['file']; </span></li><li><span>//对文件名进行过滤,以保证系统安全 </span></li><li class="alt"><span>if (!ereg('^[^./][^/]*$', $userfile)) </span></li><li><span>{ </span></li><li class="alt"><span>die('这不是一个非法的文件名!'); </span></li><li><span>} </span></li><li class="alt"><span>//对用户名进行过滤 </span></li><li><span>if (!ereg('^[^./][^/]*$', $username)) </span></li><li class="alt"><span>{ </span></li><li><span>die('这不是一个无效的用户名'); </span></li><li class="alt"><span>} </span></li><li><span>//通过安全过滤,拼合文件路径 </span></li><li class="alt"><span>$</span><span class="attribute">thefile</span><span> = </span><span class="attribute-value">"/home/$username/$filename"</span><span>; </span></li><li><span class="tag">?></span><span> </span></span></li></ol>
Perl 互換の正規表現マッチング関数 perg_match() を使用すると、通常、PHP の ereg() 関数または eregi() を使用するより高速になります。文字列に特定の部分文字列が含まれているかどうかだけを確認したい場合は、strstr() 関数または strpos() 関数を使用することをお勧めします。