不推荐使用:在自建的PHP网上商店中使用函数ereg()

时间:2013-03-19 08:38:08

标签: php preg-match modifier ereg

我不是一个核心程序员,但我对编码有一点了解。

但我确实对下面的代码有疑问。 此代码用于后端表单以更改客户设置。

public static function validate( $array )
{
    if ( isset( $array[ 'initialen' ]) && trim( $array[ 'initialen' ] ) != '' )
    {
        $pattern = '([[:digit:]]|[~`!@#$%^&*()_=+{}|\:;"/?,]|[|]|-)+';

        if ( ereg( $pattern, $array['initialen'] ))
        {
            $errors[] = 'Initialen incorrect, alleen letters en punten';
        }
        else
        {
            $_SESSION['beheer']['klanten']['temp']['initialen'] = strtoupper( $array[ 'initialen' ] );
        }
    }
    else
    {
        $errors[] = 'Initialen niet ingevuld';
    }

我收到错误:

  

不推荐使用:第138行的class_klanten.php中弃用了函数ereg()

如果我将其更改为:

if ( ereg( $pattern, $array['initialen'] ))

if ( preg_match( $pattern, $array['initialen'] ))

我收到以下错误:

  

警告:preg_match()[function.preg-match]:第138行的class_klanten.php中的未知修饰符'+'

我该如何解决这个问题?

BR,

史蒂夫

2 个答案:

答案 0 :(得分:0)

来自:PHP ereg vs. preg

preg是Perl兼容的Regex库 ereg是POSIX complient regex库

基本上模式应该是不同的,转到http://www.regular-expressions.info/他们在那里有一个非常好/完整的参考。

答案 1 :(得分:0)

正如错误消息所示,ereg已被弃用,并且您在preg_match上使用了错误的语法。

将您的代码更改为:

$pattern = '#([\d]|[~`!@#$%^&*()_=+{}|\:;"/?,]|[|]|-)+#i'
if ( preg_match( $pattern, $array['initialen'] ))

Official document about PCRE pattern