0

だから私は、関数呼び出しの各精度を見つけようとして、たくさんの PHP ファイルを読んでいます。

私が探している機能は".lng("something")." OR '.lng('something').'

次の関数を使用して検索しています

function fetchAllBetween($needle1,$needle2,$haystack,$include=false){

        $matches = array();

        $exp = "|{$needle1}(.*){$needle2}|U";
        //exit($exp);
        preg_match_all($exp,$haystack,$matches);

        $i = ($include == true) ? 0 : 1 ;

        return $matches[$i];

    }

だから私はこのようにそれを実行します

$tmp2 = fetchAllBetween("lng('","')", $theData);
    print_r($tmp2);

これは空の配列を返しますが、次を実行しようとすると

$tmp2 = fetchAllBetween("lng",".", $theData);

値が空の配列を返します...誰かこれで手を貸してくれませんか? 基本的に、一連のファイルで lng() 関数に渡される引数を取得しようとしています..

4

2 に答える 2

0

この正規表現は

preg_match_all('#\.lng\(([\'"])(.*?)(?:\1)\)#', $str, $matches);        

http://ideone.com/IQCzX

于 2012-04-30T07:36:53.333 に答える
0

結果の式はlng(('".*"'))、変更したいことがいくつかあります。これを使用してみてください:

$tmp2 = fetchAllBetween("\.lng\(['\"]","[\"']\)\.", $theData);
    print_r($tmp2);

注意事項:

  • 私は追加しました.(そしてそれをエスケープしました)
  • 角かっこをエスケープしました
  • 一重引用符と二重引用符を文字クラスに入れて、どちらにも一致するようにしました(PHP文字列の場合は二重引用符をエスケープしました)
于 2012-04-30T07:37:42.240 に答える