PHPで定義されたすべての内部関数を検出する正規表現付きのスクリプトがあります。スクリプトは正常に動作していますが、改行に問題があります。すべてのPHP関数を改行で検出する
このスクリプトでは、PHPの内部関数と定義された関数を検索しています。すべての関数を新しい関数 "no_function()"に置き換える必要があります。私のような機能を持っていた
$functions=get_defined_functions();
for($i=0;$i<count($functions["internal"]);$i++){
//Include array functions
if($functions["internal"][$i]=="array"||$functions["internal"][$i]=="array_push"){
}else{
$code=preg_replace('#('.$functions["internal"][$i].'[ |\n|\r|\t]*\([ |\n|\r|\t]*.*\))#i',"no_function()",$code);
}
}
:
str_replace($search,$replace,$string);
それは(
no_functionと交換しますので、関数が呼び出されません
)。
正常に動作します。しかし、私はそのような関数を持っている場合:
str_replace($search,
$replace,
$string);
正規表現はそれを検出しませんが、PHPもそれを実行します。私は正規表現を使っています。誰か助けてくれますか?
すべての応答ありがとうございます。
あなたの質問は全く明確ではありません。あなたがしようとしていることをよく説明する時間を取る。入力例とそれに対応する出力を追加します。私はこの時点では分類することはできませんが、あなたは間違ったやり方をしようとしていると感じています。 –
ご回答いただきありがとうございます。私は質問を更新しました、そして、それが今より理解できることを願っています。 –
'。* \))#i''を'。*?\))#si''に置き換えてください。しかし、それは間違いなく問題に近づく方法ではありません。正しいパーサーが必要です。 –