私は、コマンドタグの値を取得したい:(PHP)解析コマンド
// My command
$_cmd = 'GET a, b FROM p IN a and c="I am from Sarajevo" or d>1 ';
// My parser
if(preg_match_all('/(GET|FROM|IN)\s+([^\s]+)/si',$_cmd, $m))
$cmd = array_combine($m[1], $m[2]);
出力:私は探しています
Array
(
[GET] => a,
[FROM] => p
[IN] => a
[from] => Sarajevo"
)
をこの出力:
Array
(
[GET] => a, b
[FROM] => p
[IN] => a and c="I am from Sarajevo" or d>1
)
見ての通り、問題は空白と繰り返さCであります文字列にというタグが付いています(from
など)。どうすればこのコマンドを解析できますか?
:あなたに興味を持っている条項は、その後のトークンを(私はあなたのユースケースについて混乱していても)再マージあなたが唯一のものであることを確認することができます'から'ではなく 'FROM'を数えますか? 'IN'に大文字の' from'という文字列が含まれるシナリオがありますか? – ninetwozero
私はそれがSQLに関係していると思います...単純にSQLを使用します。そのためのインターフェイスを開発しようとしないでください。 – Dor
@Dor - 助言SQLパーサーはしないでください。私は私のORMプロジェクトのためにこれを解析する必要があります。 – dino