2

PHP での文字列解析に問題があります。独自のテンプレート パーサーを作成しようとしています (学習目的で)。http://www.domain.com/abc/def{url:abc/def}のように表示されるように、URL を次の形式にすることにしました。str_replace を使用してみましたが、この場合、「:」の後の値は何でもかまいません。文字列の展開も機能しないため、「:」は html ファイルのテキストにも存在する可能性があります。これは正規表現を介してのみ行うことができると思うので、他の方法でこれを達成できるかどうかを教えてください。

その他の注意事項。

  1. テンプレートの解析に使用されるため、テンプレートには複数の URL を含めることができます。
  2. URL にはクエリ文字列はありませんが、ソリューションでもそれらがサポートされていれば幸いです。
4

1 に答える 1

4

学習目的で、次のようにします。

preg_replace('/\{url:([^\}]*)\}/', $base_url.'$1', $string);

そして、正規表現の説明

  1. \{url:<-- このテキストを見つける
  2. [^\}]*<-- これは、「}0 回以上出現する文字以外の任意の文字」を意味します
  3. ([^\}]*)<-- 間に入れることで、()後で参照できます ( を参照'$1')
  4. \}<-- クロージング}

学習している限り、 正規表現の詳細についてはhttp://www.regular-expressions.info/をご覧ください。彼らは本当に素晴らしいです:D

于 2013-08-26T08:11:24.880 に答える