1

取る正規表現が欲しい

[QUOTE=3]

そしてそれをに変換します

<div class="quoted"><div class="quotation-author">Originally written by <strong>AUTHOR_WITH_ID=3</strong></div>

ほぼ正解ですが、著者名を取得する関数に変数を渡すことができません。

$comment = preg_replace('/\[\s*QUOTE=(\d+)\s*\]/i', '<div class="quoted"><div class="quotation-author">Originally written by <strong>'.get_comment_author((int)'$1').'</strong></div>', $comment);
4

2 に答える 2

3

交換:

'<div class="quoted"><div class="quotation-author">Originally written by <strong>'.get_comment_author((int)'$1').'</strong></div>'

動的には発生しません。評価されてから、引数として渡されます。preg_replace_callback次のように、一致ごとに関数を呼び出すために使用します。

$comment = preg_replace_callback('/\[\s*QUOTE=(\d+)\s*\]/i', function($m) {
    return '<div class="quoted"><div class="quotation-author">Originally written by <strong>'.get_comment_author((int) $m[1]).'</strong></div>';
}, $comment);
于 2012-07-12T21:51:52.633 に答える
0

preg_replaceへの呼び出しget_comment_author(および(int)キャスト) が実行される前に 発生するため、これには使用できませんpreg_replace

使用してみてくださいpreg_replace_callback

$comment = preg_replace_callback('/\[\s*QUOTE=(\d+)\s*\]/i', function($a){
    return '<div class="quoted"><div class="quotation-author">Originally written by <strong>'.get_comment_author($a[1]).'</strong></div>';
}, $comment);

注: 内容によっては、キャストget_comment_authorは必要ありません。(int)

于 2012-07-12T21:49:00.627 に答える