0

テンプレート ファイル内のリンク オブジェクトを照合するために正規表現を使用しています。基本的に、リンクが識別され、ユーザーが JS を有効にしているかどうかに応じて、JavaScript または HTML に変換されます。

サンプル リンクは次のようになります。

<div id="someDiv">{_LINK_9_link text here_noclass_noid_}</div>

コード内でこれらのオブジェクトを見つけるために使用する正規表現は次のとおりです。

$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 ]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';

現状では、このコードは、リンク テキストに文字、数字、またはスペースを含めることができる上記のような例を実行するのに問題なく機能します。/ただし、リンク テキストにorを追加しようとすると-、正規表現が機能しなくなります。

これが私が試したものです:

<!-- html link code -->
<div id="someDiv">{_LINK_9_tips/suggestions_noclass_noid_}</div>
// php link expression
$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 \/\-]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';

しかし、/. スラッシュを外すとうまくいきます。リテラル/または-正規表現に一致させる方法について何か考えはありますか? 文字、数字、スペース、ハイフン、またはスラッシュよりも多くの文字を許可することをお勧めしますが、私は正規表現の初心者なので、自分が何をしているのかよくわかりません. リンク テキストの任意の文字列 (&、%、$ などの記号も含む) に一致するように誰かが修正するのを手伝ってくれれば、それも非常にありがたいです。

前もって感謝します。

4

1 に答える 1

1

あなたはほぼ正しかった、使用してください

$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 \/-]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';
  1. 「-」は、[az] のように範囲を示すために [ ] 内で使用されますが、末尾に配置すると、1 つ多い文字と見なされます。たとえば、[az-] は文字 + 「-」に一致します。
于 2013-02-23T19:54:13.937 に答える