0

たくさん見つける

キーワード="引用符付きテキスト"

ただし、二重引用符または単一引用符を無視するものはありません。keyword="text with quotes " または keyword='text with quotes'

次のコードを作成しましたが、機能しません

function GENERIC_FIND_KEYWORD_AND_QUOTED_TEXT($STR)
{ // keyword=" " を空白または非記号文字列で囲みます (a-zA-Z0-9_ の外側)

// using (key1=' embedded qwuotes' AND key2=" embedded qwuotes") !key3=' embedded qwuotes' key4=" embedded qwuotes" ... // 入力文字列として

   $res=preg_match_all('/[a-zA-Z0-9_]{1,}=("((?:[^\\\]*?(?:\\\")?)*?)"|\'((?:[^\\\]*?(?:\\\')?)*?)\')/', $str, $arr, PREG_SET_ORDER);

print_r($arr);echo ""; // だろう

配列のように array('key1'=>'text','key2'=>"text" ,'key3'=>'text','key4'=>'text','key5'=>'text' ) }

機能しませんが、シンボルの行ごとに複数回一致することがサポートされています ([a-zA-Z0-9_]{1,} として定義され、= で終わる一重引用符または二重引用符で囲まれた引用符を無視して、引用符で囲まれた文字列を検出する必要があります一重引用符または二重引用符....

キーワードは、XML のように空白で囲まれているのではなく、非記号文字または空白で囲まれています。たとえば、すべての mysql キーワードと一致する構造を確認したい ...

どこ ?特に興味のあるキーワードにする

入出力構造:

入力: コントロールがほとんどまたはまったくありません。ユーザーが何を入力しようとしているのかわかりません。アイデアは、特に可能な限り一般的である必要があります。引用符付き文字列内のすべてを考慮する

keyword="bla 'bla "" dfddfd" または keword2='dfdfd " dsdsdfsdfdf'

確かにそれは正しく一貫して述べられなければなりません....

出力: 配列 (キーワード =>"bla 'bla "" dfddfd", keyword2=>'dfdfd " dsdsdfsdfdf', ...)

第二に:(少し異なる関連する問題) 後で置き換えるために特別なタグ付きキーワードをフィルタリングしたい (変更されていないコンポーネントが必要)

keyword="bla 'bla "" dfddfd" または _keword2='dfdfd " dsdsdfsdfdf'

ここで、タグ付けされたコンポーネント _*="...." のみがフィルター処理されます (一致パターンを変更してから、すべての配列要素をループしてセカンダリ キーワード パターンを見つける方が効率的であるとします... \

出力: 配列 ( _keyword2=>'dfdfd " dsdsdfsdfdf', ...)

4

1 に答える 1

0

正規表現:

/([^ ]+)\=((\"([^"]+)\")|(\'([^']+)\'))/
于 2012-08-03T17:18:24.850 に答える