schibsted-tech-polska/php-content-stylizer

施维布斯特媒体平台数据内容美化器

1.0.2 2017-02-15 12:23 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:06:27 UTC


README

此库是为了支持将施维布斯特媒体平台文章格式版本5中引入的文本对象转换为PHP中的HTML而编写的。

使用它,您需要创建Stylizer实例并定义支持的标签列表。有两种方法可以定义标签列表。然后,您可以使用getHtml方法传递文本和一个包含标记的数组,并将HTML代码作为输出接收。

基本用法

定义标签列表(方法1)

$stylizer = new \ContentStylizer\Stylizer([
    [
        'beginning' => '<strong>',
        'end' => '</strong>',
        'type' => 'strong',
    ],
]);

定义标签列表(方法2)

$stylizer = new \ContentStylizer\Stylizer();
$stylizer->addTag('strong', '<strong>', '</strong>');

将文本转换为HTML

$text = 'Sample text';
$markups = [
    [
        'length' => 6,
        'offset' => 0,
        'type' => 'strong',
    ],
];

$html = $stylizer->getHtml($text, $markups);

标签内的参数

任何标签的beginningend属性都可以使用字符串或匿名函数来定义。第二种方法允许我们在HTML创建过程中添加一些逻辑,并使用传递给标记对象的参数。

让我们定义link标签

$stylizer->addTag('link', function (\stdClass $params) {
    return '<a href="' . $params->uri . '" target="_blank">;
}, '</a>');

然后我们可以使用link标记

$html = $stylizer->getHtml('Our link', [
    [
        'length' => 4,
        'offset' => 4,
        'type' => 'link',
        'uri' => 'http://www.example.com',
    ],
]);

请注意,$params对象包含标记的所有属性,除了lengthoffsettype,这意味着在这个例子中它只包含uri参数。

单标签

还可以定义单标签,例如换行符 - Stylizer将没有定义end参数的每个标签视为单标签。

可以在构造函数传入的数组中定义它

    ...
    [
        'beginning' => '<br>',
        'type' => 'br',
    ],
    ...

我们也可以使用addTag方法来定义它

$stylizer->addTag('br', '<br>');

如果我们定义了br标签,Stylizer也会在文本中每个PHP_EOL出现之前添加换行符。

测试

此库包含单元测试和一些其他CI工具,可以使用Node.js轻松运行。为此,安装Node.js环境,然后是Grunt CLI

sudo npm install -g grunt-cli

和项目依赖项

npm install

要开始测试,只需执行

grunt test