1

配列を使用できるようにpreg_match_allを構築しようとしていますが、問題は、正規表現を調整して機能させることができないことです。

入力例は次のとおりです。

#|First Name|#
This text shouldn't be caught
#|Second Value|#

FirstNameとSecondValueの両方が配列に含まれている必要があります。

これが私が試したことです:

preg_match_all('/\#\|(.*?)\|\#\]/',$html, $out);

preg_match_all ("/^#\|*\|#*$/i", $html, $out);
4

4 に答える 4

1

この正規表現を試してください:

/\#\|(.*?)\|\#/
于 2012-07-19T21:23:02.833 に答える
1

\]最初のものはほぼ正しいです。それはあなたが望むものを壊す最後の近くにしか含まれていません. 使用する

/\#\|(.*?)\|\#/

の一致で、正しい結果が得られます$out[1]

于 2012-07-19T21:24:25.720 に答える
0

試してみてください:

preg_match_all('/#\|(.*?)\|#/', $html, $out);

# をエスケープする必要はありません。# の間に # を指定しない場合は、以下も使用できます。

preg_match_all('/#\|([^#]*)\|#/', $html, $out);
于 2012-07-19T21:26:42.960 に答える
0

'.' を追加する必要があります。あなたの棒の間の文字。この文字は、任意の文字に一致することを意味します。それがなければ、0 個以上の '|' に一致すると言っています。文字。複数行の一致のために m 修飾子も追加する必要があります。

/^#\|.*\|#$/im
于 2012-07-19T21:27:01.510 に答える