1

プレースホルダーテキストの周りのHTMLタグを削除する正規表現を作成しようとしているので、次のようになります。

<p>
    Blah</p>
<p>
    {{{body}}}</p>
<p>
    Blah</p>

これになります:

<p>
    Blah</p>
{{{body}}}
<p>
    Blah</p>

私の現在の正規表現は/<.+>.*\{\{\{body\}\}\}<\/.+>/msUです。ただし、プレースホルダーの前にあるタグの内容も削除されるため、次のようになります。

{{{body}}}
<p>
    Blah</p>

ユーザーが常にプレースホルダーを内部<p>に配置するとは限らないため、プレースホルダーのすぐ周りにあるタグのペアを削除したいと思います。正規表現の修正にご協力いただければ幸いです。

[編集]

入力がCKEditorによって処理される場合と処理されない場合があることに注意することが重要だと思います。開始タグに改行とタブが追加されるため、正規表現には/sm(dotall + multiline)修飾子を付ける必要があります。

4

2 に答える 2

5

これを試して:

<[^>]+>\s*\{{3}body\}{3}\s*<\/[^>]+>

ここで実際に見てください: http: //regexr.com?30s4o

内訳は次のとおりです。

  • <[^>]+>開始HTMLタグと一致し、それだけです。
  • \s*空白をキャプチャします(と同等[ \t\r\n]*
  • \{{3}{正確に3回一致します
  • body文字列に文字通り一致します
  • \}{3}}正確に3回一致します
  • \s*繰り返しますが、空白をキャプチャします
  • <\/[^>]+>終了HTMLタグに一致します
于 2012-05-06T16:20:25.307 に答える
1

php strip_tagsはあなたのケースでは機能しませんか?

http://php.net/manual/en/function.strip-tags.php

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>
于 2012-05-06T16:35:23.573 に答える