想定している処理と異なる結果が得られるため質問させていただきます。
ソースコード
php
1<?php 2if(preg_match("/^\\?\"(.*)\\?\"$/", $name, $matches)){ 3 print_r($matches); 4}
想定している処理は、$nameの値が
バックスラッシュ(\) 1つまたは2つから始まり,ダブルクォート、任意の文字列、バックスラッシュ(\)1つまたは2つ、ダブルクォートで終わる
というのが想定している処理です。
なので、以下のように$nameを設定するとマッチするのはわかります。
php
1<?php 2$name = '\"test\"'; 3 4if(preg_match("/^\\?\"(.*)\\?\"$/", $name, $matches)){ 5 print_r($matches); 6}
結果
text
1Array 2( 3 [0] => \"test\" 4 [1] => test\ 5)
しかし、以下の様に先頭がダブルクォートから開始してもマッチしてしまいます。
これはなぜでしょうか。
php
1<?php 2$name = '"test"'; 3 4if(preg_match("/^\\?\"(.*)\\?\"$/", $name, $matches)){ 5 print_r($matches); 6}
text
1Array 2( 3 [0] => "test" 4 [1] => test 5)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。