0

HTML コンテンツをテキスト データ型の MySQL フィールドに保存しています。また、ckeditor を WYSIWYG エディターとして使用して、MySQL に保存されている HTML を作成しています。ユーザーが探してインクルードファイルを呼び出すことで置き換えることができるある種の文字列を配置する方法を探しています。例えば:

// This string contains the text pulled from mysql
$pageContent = "<p>This page contains a calendar of events</p> {{calendar}} <p>Choose a date or scroll through days to view events.</p>";

// Function needed that changes {{calendar}} to bring in my script calendar.php like include('calendar.php');
// Note that in this example I want to call my script that does the calendar stuff, but maybe I have a script to do a photo gallery which could be {{photogallery}}, or news {{news}}, or whatever...

// Print the $pageContent including the calendar.php contents here
print $pageContent;
4

1 に答える 1

0

テキスト (この場合は$pageContent) とパラメータの配列 (つまり、array('calendar' => 'calendar.php')) を取り、必要なファイルをインクルードするちょっとしたものを次に示します。現在テストされていませんが、正しい方向に進むはずです。

function parseTemplate($templateText, $params)
{
    foreach ($params as $key => $value)
    {
        ob_start();
        include($value);
        $includeContents = ob_get_contents();
        ob_end_clean();
        $templateText = str_replace('{{'.$key.'}}', $includeContents, $templateText);
    }
    return $templateText;
}

あなたの場合の使用法は次のとおりです。

// This string contains the text pulled from mysql
$pageContent = "<p>This page contains a calendar of events</p> {{calendar}} <p>Choose a date or scroll through days to view events.</p>";

$params = array('calendar' => 'calendar.php');
$pageContent = parseTemplate($pageContent, $params);

// print the $pageContent including the calendar.php contents here
print $pageContent;

ファイルをインクルードする代わりに、単純にテキストを置き換えるために同じアイデアを使用することもできます:

function parseTemplateText($templateText, $params)
{
    foreach ($params as $key => $value)
    {
        $templateText = str_replace('{{'.$key.'}}', $value, $templateText);
    }
    return $templateText;
}
于 2012-11-14T15:03:35.333 に答える