2009-08-28 5 views
0

私は、ユーザーが別のユーザーが言ったことをユーザーが引用できるサイトのコメントセクションに取り組んでいます。これはフォーラムの基本的な「見積もり」ボタンです。フォーラムでユーザーを引用する

これにはBBcodeを使用してください。しかし、どのように結果を達成するか分からない。

この機能は通常どのように行われますか?

私は、理想的には、今のよう

<blockquote>username said: 
some sentence 
</blockquote> 

に変換されるだろう

[quote=username] some sentence [/quote] 

が、私は

"[quote=username] ... [/quote]" 
into 
<blockquote> ... </blockquote> 

を変換するコードを持っているが、私は、ユーザー名を失うことができます

this i私が使用しているコード

// output user comment 
echo parse_quote($row['user_comment']); 


// and this is the function to parse the quote 

function parse_quote($str) { 
    $str = preg_replace("/\[quote=[\w\s\-\W][^\]]{1,}\]/", "<blockquote>:", $str); 
    $str = preg_replace("/\[\/quote\]/", "</blockquote>", $str); 
    return $str; 
} 

一言で言えば、フォーラムの引用は通常どのように行われているのですか?あなたは人を許可する場合は、もう少し修正が必要となります

function parse_quote($str) { 
    $str = preg_replace("/\[quote=([^\]]+)\]/", "<blockquote>$1 said:", $str); 
    $str = preg_replace("/\[\/quote\]/", "</blockquote>", $str); 
    return $str; 
} 

:もしそうなら、どのように私は

[quote=username] some sentence [/quote] 

は次のようにそれを変更してみてください

<blockquote>username said: 
some sentence 
</blockquote> 

答えて

2

に変換することができます[quote]のようなユーザー名を指定せずに引用してください。

1

まあ、私がお勧めでしょう一つのことは、あなたがあなたのファイルを介して複数のパスを避けたいということで、PHPはpreg_replace_callback()を使用していることをやって、かなり便利な方法を提供:

function process_codes($str) { 
    return preg_replace_callback('!\[(.+?)\]!', 'process_code', $str); 
} 

function process_code($matches) { 
    if ($matches[1] == '/quote') { 
    return '</blockquote>'; 
    } else if (preg_match('!quote\s*=\s*(.+?)!', $matches[1], $args)) { 
    return "<blockquote>$args[1] said:<br><br>"; 
    } 
    // etc 
} 
0

いいえ、フォーラムは一般的に以下を使用しますフォーマット:

<div><strong>username</strong> said:</div> 
<blockquote> 
some sentence 
</blockquote> 
関連する問題