引用符で囲まれた文字列のリストを照合し、引用符で囲まれた部分文字列を取得しようとしています。 PHPのpreg_match_all
は引用符で囲まれた文字列のリストを検証しますが、返された "$ matches"には引用符で囲まれた部分文字列がすべて含まれません。通常、最初と最後を返します。PHP preg_match_allからすべての一致を取得しようとしています
私は式のコンポーネントに名前(?P<name>)
を割り当てようとしましたが、結果が重複しているように見えますが、まだ引用された部分文字列はすべて受け取りません。
DEFINE
を使用してコンポーネントのサブルーチンを作成しても、結果は改善されませんでした。
以下は、入力しようとしている入力の例です。
'abcd','efgh"ij','list,543','Brown fox.','left(paren','right)paren'
以下は私が使用している表現です。文字列は一重引用符で囲まれているだけです。私は文字列として気づく
Array
(
[0] => Array
(
[0] => 'abcd','efgh"ij','list,543','Brownfox.','left(paren','right)paren'
)
[1] => Array
(
[0] => 'abcd'
)
[2] => Array
(
[0] => ,'right)paren'
)
[3] => Array
(
[0] => 'right)paren'
)
)
を...
/(?x)^ (\x27[^\x27]*\x27) (,(\x27[^\x27]*\x27))* $/
preg_match_all
への呼び出しは次のようになります:
$pregex = '/(?x)^ (\x27[^\x27]*\x27) (,(\x27[^\x27]*\x27))* $/';
echo 'Match result: '.preg_match_all($pregex, $text_list, $matches, PREG_PATTERN_ORDER)."\n";
、$マッチが含まれている "ブラウンキツネ。" "Brownfox。"に変更されました。これは問題であり、引用符で囲まれた部分文字列をすべて列挙しません。私が見てみたいと思い何
は(そこに返される部分文字列の先頭に何のカンマはありませんが、彼らはそこでなければならない場合は、それをすることの通知)のようなものです:
はArray
(
[0] => Array
(
[0] => 'abcd','efgh"ij','list,543','Brownfox.','left(paren','right)paren'
)
[1] => Array
(
[0] => 'abcd'
)
[2] => Array
(
[0] => 'efgh”ij'
)
[3] => Array
(
[0] => 'list,543'
)
[3] => Array
(
[0] => 'Brown fox.'
)
[3] => Array
(
[0] => 'left(paren'
)
[3] => Array
(
[0] => 'right)paren'
)
)
私は推測する私質問は:
- 私はpreg_match_allを使って何をしたいのですか?
- 可能であれば、何が間違っているのか、私は何か を理解していますか?
- 可能であれば、 の解析はどのように行う必要がありますか?
ありがとう!
'$ string = explode( '、'、$ string); preg_match_all( "〜 '([^')]; $ string = array_map( 'trim'、$ string、array_fill(0、count($ string)、 ''")); ' –
] +) '〜'、$ string、$ matches); print_r($ matches); ' –
ありがとう!私はそれを試してみましょう!私は "〜"が何をしているのか分かりませんが、私はそれを調べます。 – John