0

助けてください。次のエラーが表示されます。

( ! ) 警告: preg_match(): C:\wamp\www\pmd\install\ioncube_checker.php 行 22 の不明な修飾子 '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;

}

4

1 に答える 1

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)

ただし、正規表現を使用して HTML をまったく解析しないことを検討する必要があります。DOMエンジンを使用する方がはるかに優れており、PHP に既に.

于 2012-06-17T11:47:54.667 に答える