php preg_match - 编译失败

时间:2012-01-28 06:17:23

标签: php preg-match

想知道是否有人可以帮助解决这个问题。这是我第一次看到这个错误。

  

警告:preg_match()[function.preg-match]:编译   失败:在第9个偏移处没有重复

与我的代码的这一部分有关:

( isset( $_POST[$post_key] ) && $misc[2] === true && ! preg_match( $misc[0], $_POST[$post_key] ) ) 

我的完整(相关的那段)代码在下面。

发送的数据如下:

ajax-request    true
author          1
epi             2
jbid            781711001327010590
message         dfdf
type            send-invite

任何人都知道这个或导致错误的原因是什么原因?

case 'send-invite' :

    if( free_member_is_logged_in() ) {

        $post_array = array(
            'message' => array(
                '#^.*{3,500}$#is',
                '<p class="error_message">Please enter a message between 3 and 500 characters.</p>',
                true
            ),
            'epi' => array(
                '#^[0-9]+$#is',
                '<p class="error_message">An internal error has occured. If this problem persists please contact support</p>',
                true
            ),
            'author' => array(
                '#^[0-9]+$#is',
                '<p class="error_message">An internal error has occured. If this problem persists please contact support.</p>',
                true
            ),
            'jbid' => array(
                '#^[0-9]+$#is',
                '<p class="error_message">Please specify a job which you have published.</p>',
                true
            )
        );

        $continue = true;

        foreach( $post_array as $post_key => $misc ) {
            if( 
                    ( ! isset( $_POST[$post_key] ) && $misc[2] === true ) 
                || 
                    ( isset( $_POST[$post_key] ) && $misc[2] === true && ! preg_match( $misc[0], $_POST[$post_key] ) ) 
                || 
                    ( isset( $_POST[$post_key] ) && $misc[2] === false && $_POST[$post_key] != '' && ! preg_match( $misc[0], $_POST[$post_key] ) ) 
            ) {

                $continue = false;
                $error_message = $misc[1];

            }
            ${cleankey($post_key)} = res($_POST[$post_key]);
        }

2 个答案:

答案 0 :(得分:1)

我想这里也一样 - 你不能一起使用* {}:

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset

$post_array = array(
        'message' => array(
            '#^.*{3,500}$#is',

答案 1 :(得分:1)

  

3到500个字符之间的消息

正则表达式#^.{3,500}$#is就可以了。