1

私は本当に単純でなければならないことをしようとしていますが、私はPHPにかなり慣れていないので、これに苦労しています。私が望むのは、0、1、またはそれ以上の区切り文字 (中かっこ) を含む文字列を分割し、区切り文字と文字列の間の文字列と外側の文字列を保持することです。

例: 「こんにちは {F}{N}、お元気ですか?」出力します:

Array ( [0] => Hello 
        [1] => {F}
        [2] => {N} 
        [3] => , how are you? ) 

これまでの私のコードは次のとおりです。

$value = 'Hello {F}{N}, how are you?';
$array= preg_split('/[\{\}]/', $value,-1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($array);

出力(中括弧がありません):

Array ( [0] => Hello 
        [1] => F
        [2] => N 
        [3] => , how are you? )

私も試しました:

preg_match_all('/\{[^}]+\}/', $myValue, $array);

どの出力(中括弧はありますが、外側のテキストはフラッシュされます):

Array ( [0] => {F} 
        [1] => {N} ) 

私は preg_split で順調に進んでいると確信していますが、正規表現が間違っています。誰でもこれで私を助けることができますか?または、私が道を外れているかどうか教えてください。

4

2 に答える 2

1

区切り文字をキャプチャしていません。それらをキャプチャ グループに追加します。

/(\{.*?\})/
于 2013-04-15T02:06:26.177 に答える
0

キャプチャする式の部分を括弧で囲む必要があります。

preg_split('/(\{[^}]+\})/', $myValue, -1, PREG_SPLIT_DELIM_CAPTURE);

のドキュメントを参照してくださいpreg_split()

于 2013-04-15T02:06:36.440 に答える