2

PHPでテキストをフィルタリングしています。次のようなパターンを探します。

Mary [qtip:had|past tense of have] little lamb.

ツールチップ「haveの過去形」からアンカーテキスト「had」を抽出します]

処理の一部は正規表現を使用することです/\[qtip:([^\|\\]]+)\|?([^\\]]*)?\]/

これはうまくいっています

機能を拡張しようとしています。

Mary [qtip:had|past [otherFunction:tense|verb form signalling time] of have] little lamb.

私の素朴なパターンは、"had"&"past [otherFunction:tense|verb form indicating time"

[]埋め込まれたペアをスキップするパターンが必要です。これらは、アンカーまたはツール ヒントでは許可されていません。

4

1 に答える 1

1

なぜエスケープし|、ダブルエスケープするの]ですか? 問題を解決するには[、パターン内で開くことを禁止するだけです。]これには、ネストされた角かっこに遭遇することなく、パターンがクロージングに到達する必要があります。

preg_match_all('/\[qtip:([^|[\]]+)\|?([^[\]]*)\]/', $input, $matches);

オプションになるパターンで?use を使用すると冗長になるため、最後も削除しました。*

于 2012-11-18T13:53:37.497 に答える