0

いくつかの PHP ファイルがあり、PHP エンジンを使用せずに配列の値を手動で解析したいと考えています。

それらは次のようになります。

$LANG['help']['attribute_label'] = 'Label';

また、次のように、1 つの属性しか持たないものもあります。

$LANG['adm_something'] = 'Label';

すべての行から引用符なしで「ラベル」を抽出する必要があります。一致する正規表現パターンをまだ見つけていません。私は他の選択肢にもオープンです。

4

3 に答える 3

0
preg_match_all("/(\\\$[^=]*)[\s\t\r\n]*=[\s\t\r\n]*([^\r\n]*);/s", file_get_contents('-- PUT THE FILE NAME HERE--'), $matches);
$results = array();
foreach ($matches[1] as $key=>$var) {
    $results[trim($var)] = trim(trim($matches[2][$key], '\'"'));
}
var_dump($results);

これにより、ファイル内のすべての変数宣言が検出され、一重引用符または二重引用符、整数値(必ずしも引用符で囲む必要はありません)、さらには配列が機能します。値全体が1行にある場合にのみ機能することに注意してください。全体として、正規表現はかなりばかげています。しかし、この場合は機能するはずです。

于 2013-03-07T16:26:30.537 に答える
0
preg_match_all('/= \'(.+)\';/', '$LANG[\'help\'][\'attribute_label\'] = \'Label\';', $matches );

print_r( $matches );


Array
(
[0] => Array
    (
        [0] => = 'Label';
    )

[1] => Array
    (
        [0] => Label
    )
)
于 2013-03-07T16:28:13.913 に答える
0
preg_match("/\\\$LANG['a-zA-Z\[\]_]*\s=\s\'([A-Za-z0-9]+)/", $line, $matches);

$matches[1]提供された両方のケースで Label という単語が含まれます

于 2013-03-07T16:19:14.397 に答える