2017-01-19 9 views
2

以下は入力を照合するための例です。しかし、それはまったく一致しませんが、http://www.phpliveregex.com/にこの正規表現を追加すると結果が返されます。私は何が間違っているのか分からない。 - 宣言されていないことこれ以上一致することはできませんPHPのpreg_matchよりも大きい記号

array(2 
    0 => array(1 
      0 => $this->Lang['TEST'] 
    ), 
    1 => array(1 
      0 => TEST 
    ) 
) 
+0

は私の答えを確認してください、それはあなたのために働く場合は、受け入れてくださいを参照してください。 –

答えて

2

リテラル二重引用符で囲まれた文字列の中$シンボルがthisに続き、PHPが知られている変数にそれを補間しようとしている。問題

$input_lines = "$this->Lang['TEST']";  
preg_match_all("/\$this->Lang\[\'(.*?)\'\]/", $input_lines, $output_array); 

期待される結果私をポイントしてください。単一の正規表現で文字列補間を回避するために、リテラル引用された使用:

$input_lines = "\$this->Lang['TEST']";  
preg_match_all('/\$this->Lang\[\'(.*?)\'\]/', $input_lines, $output_array); 
print_r($output_array); 

PHP demo

+0

@shyammtpこの回答は正しいようです。緑のダニを授与するか、それについて正しくないことを説明するコメントを残してください。 – mickmackusa

関連する問題