【问题标题】:preg_match error and debugging php codepreg_match 错误和调试 php 代码
【发布时间】:2012-06-17 11:46:48
【问题描述】:

请帮忙。我收到此错误:

( ! ) 警告:preg_match(): Unknown modifier 'b' in C:\wamp\www\pmd\install\ioncube_checker.php on line 22

当我运行以下代码时:

function system_info($php_info) {
$server_info = array();
$server_info['thread_safe'] = 'false';
$server_info['debug_build'] = 'false';
$server_info['php_ini_path'] = '';

foreach (explode("\n",$php_info) as $line) {
    if (preg_match('/command/',$line)) {
        continue;
    }

    if (preg_match('/thread safety.*(enabled|yes)/Ui',$line)) {
        $server_info['thread_safe'] = 'true';
    }

    if (preg_match('/debug.*(enabled|yes)/Ui',$line)) {
        $server_info['debug_build'] = 'true';
    }


    if (preg_match("/configuration file.*(</b></td><TD ALIGN=\"left\">| => |v\">)([^ <]*)(.*</td>*)?/",$line,$match)) {
        $server_info['php_ini_path'] = $match[2];

        if (!@file_exists($php_ini_path)) {
            $server_info['php_ini_path'] = '';
        }
    }

    $cgi_cli = ((strpos(php_sapi_name(),'cgi') !== false) || (strpos(php_sapi_name(),'cli') !== false));
    $cgi_cli ? $server_info['cgi_cli'] = 'true' : $server_info['cgi_cli'] = 'false'; 
}
return $server_info;

}

【问题讨论】:

    标签: php ioncube


    【解决方案1】:

    由于您使用/ 作为正则表达式分隔符,您需要使用\ 转义任何/。但是,在处理 HTM 时使用不同的分隔符要容易得多:

    preg_match("/configuration file.*(</b></td><TD ALIGN=\"left\">| => |v\">)([^ <]*)(.*</td>*)?/",$line,$match)
    

    应该是

    preg_match("#configuration file.*(</b></td><TD ALIGN=\"left\">| => |v\">)([^ <]*)(.*</td>*)?#",$line,$match)
    

    但是,您应该考虑not using regexes to parse HTML at all - 使用 DOM 引擎会更好,而且 PHP 已经has one

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 2011-12-31
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多