dongleiwei2182 2018-06-22 07:07
浏览 47

preg_grep():编译失败:在偏移量0处不重复

After updating my PHP from 5.3 to 7.1.9, I keep getting this error on my get_browser_language function.

I tried to debug it using several method but no luck, the variables etc all are correct.

Code;

function get_browser_language( ) {
    global $cachedb;
    $available = array();
    $default = get_option('def_lang','tr');
    // List available
    $avails = $cachedb->get_results( "SELECT `lang_code` FROM  ".DB_PREFIX."languages");
    foreach ($avails as $av){
    $available[] = $av->lang_code;     
    }
    if ( isset( $_SERVER[ 'HTTP_ACCEPT_LANGUAGE' ] ) ) {
        $langs = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
    if ( empty( $available ) ) {
      return $default;
    }
        foreach ( $langs as $lang ){
            $lang = substr( $lang, 0, 2 );
            if( in_array( $lang, $available ) ) {
                return $lang;
            }
            //Test for XX-nr
            $matches = preg_grep('/'.$lang.'/', $available);
            if($matches) { 
            if(isset($matches[0])) {            
            return $matches[0];
            }
            }
        }
    }
    return $default;
}

I keep getting warning at $matches = preg_grep('/'.$lang.'/', $available);

Warning;

PHP Warning:  preg_grep(): Compilation failed: nothing to repeat at offset 0 ...

What could be the issue? Thanks in advance!

  • 写回答

1条回答 默认 最新

  • dongqiangteng7319 2018-06-22 13:42
    关注

    @Toto gave me an idea with his comment. After spending some time on checking $_SERVER['HTTP_ACCEPT_LANGUAGE'] values, it returns empty value sometimes and I believe this was the reason I'm receiving this warning.

    So basically I did the following;

    I changed

    //Test for XX-nr
    $matches = preg_grep('/'.$lang.'/', $available);
    

    to this;

    //Test for XX-nr
    if(ctype_alnum($lang)){
        $matches = preg_grep('/'.$lang.'/', $available);
        //error_log(print_r("LANG: " . $lang, TRUE));
    }
    

    So it returns default lang-code when $_SERVER['HTTP_ACCEPT_LANGUAGE'] returns empty result.

    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计