0

基本的に、2つの別々のBBCodeのようなタグの複数の出現を探すためにテキストの大きな文字列を検索し、それらの間のデータを取得する手段が必要です。例えば:

$string = "Referenced section of text[ref]Reference text[/ref]";
$getStringBetween = gsb($string, "[ref]", "[/ref]";
echo $getStringBetween; //Would output "Reference Text"

以前preg_match_allは文字列を検索していましたが、最初は機能していましたが、比較的信頼性が低いことがわかりました。それが機能したときは良かったのですが、その後まもなく、1つの配列キーの最初の参照タグと最後の参照タグの間のすべてが壊れて出力されました。

もう1つの大きな問題は、[ref][/ref]タグが機能するために独自の行にある必要があることです。

私の話の教訓として、2つの特定のテキスト文字列を探し、PHPを使用してそれらの間のデータを取得するための何らかの手段が必要です。

4

1 に答える 1

1

preg_match_all で「最小」を試しましたか? Preg マッチングは通常貪欲です (基準を満たすものを可能な限り取得します) が、最小限に変更できます。.+? を使用 また 。*?試合として。

複数行にまたがって一致させたい場合は、複数行に m を使用します。質問に基づいて必要かどうかはわかりませんが、必要なものかもしれません。

次のようにしてください。

preg_match_all('#\[ref\](.*?)\[/ref\]#m', $string, $aMatches);
于 2012-11-22T06:15:22.463 に答える