okneloper placeholders

批量替换(HTML)字符串中的占位符。

v1.0.0 2016-11-08 21:46 UTC

This package is auto-updated.

Last update: 2024-09-20 09:13:14 UTC


README

批量替换(HTML)字符串中的占位符。

它在替换前提供所有占位符的完整列表。当你有很多占位符且只想获取所需的那些时,这很有用。

例如,如果你的数据存储在数据库中或由远程API返回,通常你希望在一个查询/请求中获取所有数据。

##用法

$content = '
<div class="intro-message">
    <h1>:#:home.h1:#:</h1>
    <h3>:#:home.h2:#:</h3>
</div>
';

$content = $processor->process($content);

echo $content;

/*
<div class="intro-message">
    <h1>Welcome to the site!</h1>
    <h3>Slogan goes here</h3>
</div>
*/

请参阅完整示例以获取实现细节。

示例

/**
 * Define a placeholder translator by implementing Okneloper\Placeholders\Translator interface
 */
class ExamplePlaceholderTranslater implements Translator
{
    /**
     * @param PlaceholderCollection $placeholders
     * @return array
     */
    public function translate($placeholders)
    {
        $keys = $placeholders->keys();
        // fetch placeholders using keys from database
        // ...
        $data = [
            'home.h1' => 'Welcome to the site!',
            'home.h2' => 'Slogan goes here',
        ];

        $replacements = [];
        foreach ($placeholders as $placeholder) {
            $replacements[$placeholder->placeholder] = $data[$placeholder->key];
            // optionally apply filters found in $placeholder->filters
        }

        return $replacements;
    }
}

// Batch replace placeholders in a response
    /**
     * Handle the event.
     *
     * @param Request $request
     * @param Response $response
     */
    public function handle(Request $request, Response $response)
    {
        $content = $response->getContent();

        $processor = new Processor(new ExamplePlaceholderTranslater());

        $content = $processor->process($content);

        $response->setContent($content);
    }