2

phpbb3フォーラムからの最新の投稿を自分のWebサイトに表示したいのですが、bbcodeはありません。だから私はbbcodeを削除しようとしていますが、成功しなければ、たとえば投稿の1つは次のようになります:

[quote="SimonLeBon":3pwalcod]bladie bla bla[/quote:3pwalcod]bla bla bladie bla blaffsd
fsdjhgfd dgfgdffgdfg

bbcodeを取り除くために、私はグーグルで見つけた関数を使用します。他のいくつかの同様の関数も試しました。

 <?php
function stripBBCode($text_to_search) {
     $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
     $replace = '';
     return preg_replace($pattern, $replace, $text_to_search);
}
?>

ただし、これは実際には何の効果もありません。

4

4 に答える 4

5

これにより、有効なbbcodeが削除されます(つまり、開始タグが終了タグと一致します)。

$str = preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);

CodePad

再利用可能な機能

function stripBBCode($str) {
   return preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
}

説明

  1. \[リテラルに一致し[ます。
  2. (\w+)1つ以上の単語文字を一致させ、キャプチャグループに保存し1ます。
  3. =リテラルに一致し=ます。
  4. .*?\nとの間=を除くすべての文字を不規則に一致させ:ます。
  5. :リテラルに一致し:ます。
  6. (.*?)\nとの間:を除くすべての文字を不規則に一致させ]、キャプチャグループに保存し2ます。
  7. \]リテラルに一致し]ます。
  8. (.*?)\nとの間:を除くすべての文字を不規則に一致させ]、キャプチャグループに保存し3ます。
  9. \[リテラルに一致し[ます。
  10. /\1\2以前のキャプチャグループと再度一致させます。
  11. \]リテラルに一致し]ます。
于 2011-05-19T12:13:51.430 に答える
0

これがphpBBのものです(スタンドアロンになるように少し調整されています):

/**
* Strips all bbcode from a text and returns the plain content
*/
function strip_bbcode(&$text, $uid = '')
{
    if (!$uid)
    {
        $uid = '[0-9a-z]{5,}';
    }

    $text = preg_replace("#\[\/?[a-z0-9\*\+\-]+(?:=(?:&quot;.*&quot;|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);

    $match = return array(
        '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
        '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
        '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
        '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
        '#<!\-\- .*? \-\->#s',
        '#<.*?>#s',
    );
    $replace = array('\1', '\1', '\2', '\1', '', '');

    $text = preg_replace($match, $replace, $text);
}
于 2011-05-20T19:20:29.577 に答える
0

PHPに組み込まれているBBCode解析機能を使ってみませんか?

http://php.net/manual/en/book.bbcode.php

于 2012-12-20T20:28:29.813 に答える
0

現在、phpbb独自の関数https://wiki.phpbb.com/Strip_bbcodeを使用してください

于 2017-03-24T19:37:12.730 に答える