请帮忙。我收到了这个错误:
(!)警告:preg_match():第22行的C:\ wamp \ www \ pmd \ install \ ioncube_checker.php中的未知修饰符'b'
当我运行以下代码时:
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;
}
答案 0 :(得分: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。