0

私はその種のブログ管理システムを作っています。ブログのホームページ、カテゴリ ページ、ブログ エントリ ページなど、各ページのテンプレートをユーザーが定義できるようにします。

ホームページとカテゴリのリストについて{#BLOG:PREVIEW:120#}は、エントリの最初の 120 文字を表示するスタイルのテンプレート変数をユーザーに用意してもらいたいと思います。

私が試したこと:

 $content = preg_replace("/{#BLOG:PREVIEW:(.*?)#}/", substr($entry, 0, $1), $template);

しかし、私は得る:

解析エラー: 構文エラー、予期しない T_LNUMBER、T_VARIABLE または '$' が必要です

4

2 に答える 2

2

やりたいことのために、正規表現のコールバックを使用する必要があります。

$content = preg_replace_callback("/{#BLOG:PREVIEW:(.*?)#}/", function($arr) uses($entry) {
    return substr($entry, 0, $arr[1]);
}, $template);

匿名関数をサポートするバージョンの PHP を使用していない場合:

function template_replace($arr) {
    // This global variable could be replaced with an object member, if inside a class
    global $entry;
    return substr($entry, 0, $arr[1]);
}

$content = preg_replace_callback("/{#BLOG:PREVIEW:(.*?)#}/", 'template_replace', $template);
于 2013-06-10T22:16:36.937 に答える
0

出来るよ:

echo preg_replace_callback('~\{#BLOG:PREVIEW:\K\d++~',
    function($nb) use ($entry) {
        return substr($entry, 0, $nb[0]);
    }, $template);
于 2013-06-10T22:35:55.100 に答える