2

我制作了一个自定义 bbcode 解析器函数并将其添加到我的助手中

if ( !function_exists('bbcode_parser'))
{
    function bbcode_parser($str) 
    {
        $patterns = array(
            '#\[b\](.*?)\[/b\]#is',
            '#\[img\](.*?)\[/img\]#is',
            '#\[url\](.*?)\[/url\]#is',
            '#\[url=(.*?)\](.*?)\[/url\]#is'
        );

        $replacements = array(
            '<strong>$1</strong>',
            '<img src="$1" />',
            '<a href="$1">$1</a>',
            '<a href="$1">$2</a>',
        );

        $str = preg_replace($patterns, $replacements, $str);
        return $str;
    }
}

这很好,可以像我想要的那样工作,但我的问题是如何在每个替换值上应用一个函数。

费。对于没有内部数据的 url,我想用 url 的网站标题替换

或验证 url,如果它有 http://

我还想检查图像的大小,如果它太大,我想在打印时通过添加“宽度”属性来调整它的大小,然后在全尺寸图像中添加一个标签。

这可能吗?如果是这样,该怎么做?

4

1 回答 1

0

您可以使用 preg_replace_callback() http://www.php.net/manual/en/function.preg-replace-callback.php来实现它

只有匹配的元素将被传递给回调,因此您将能够创建所需的回调或对正常的正则表达式模式应用标准替换。

于 2013-07-19T09:14:21.913 回答