2017-11-06 5 views
-3

私はこの問題に関する二重の投稿重複があることを知っています - しかし、残念ながら私は一致する答えを見つけることができませんでした。私は、だから私は、次の試行しようとした変数変数php preg_match

if(preg_match('/^field_name/', $key)){ 
} 

と「FIELD_NAME」を置き換えるやろうとしている

- しかし、成功しませんでした...

if(preg_match('/^\['.$field_name.'\]/', $key)){}  

------------------------------------------------ 

if(preg_match('/$field_name/', $key)){} 

------------------------------------------------ 

if(preg_match('/^[$field_name]/', $key)){} 

------------------------------------------------ 

if(preg_match('/^{'. $field_name .'}$/', $key)){} 
+1

「/」です。 $ field_name。 '/' 'または' '/^$ field_name /" 'となります。あなたがそこに加えている他のすべての歌と踊りは役に立たない。また、['preg_quote'](http://php.net/preg_quote)を見てください。 – deceze

+0

ありがとうございます - そこにたくさんのごみがあることを知っています - しかし...あなたが必死になっているときには、あなたができることはすべて....... – RoyBarOn

答えて

1
$field = 'test'; 

if(preg_match("/^$field/", 'test')){ 
    echo 'working'; 
} 

二重引用符を使用は、PHPは文字列内の変数を解析することを確認します。

2

あなたのコードがうまくいかない理由は、ほとんどの場合、変数を含めるために間違った構文(引用符)を使うからです

変数を一重引用符で囲むだけでは、正しいコードは

if(preg_match('/'.$field_name.'/', $key)){} 
+0

予防策として、動的値を正規のものとして使用する前にエスケープすることをお勧めします例外パターン。 '(preg_match( '/ ^'。preg_quote($ field_name)。 '$ /'、$ key)){}' – Geoffray