Joomla:K2 - 如何使用preg_replace从元描述中去掉大括号

时间:2015-02-09 13:25:41

标签: php joomla metadata curly-brackets k2

我需要从joomla/K2创建的元描述中删除一些花括号。

我发现了两个php解决方案来删除不需要的大括号:

$description = preg_replace( '/{.+?}/', '', $description);

$metaDescItem = str_replace('/{.+?}/', '', $metaDescItem);

有不同的花括号控制着我的应用内容:

{123456789}, {123456789,123456789}, {URL}, {}

最好的解决方案是摆脱元描述输出中的任何大括号。

我是php新手,我不确定哪个功能正确。

接下来的问题是,我不知道在K2的php文件中插入该函数的位置。

我认为我找到了生成元描述的正确的php文件。

以下是/components/com_k2/views/item/view.html.php的引用:

// Set metadata
    if ($item->metadesc)
    {
        $document->setDescription((K2_JVERSION == '15') ? htmlspecialchars($item->metadesc, ENT_QUOTES, 'UTF-8') : $item->metadesc);
    }
    else
    {
        $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext.' '.$item->fulltext);
        $metaDescItem = strip_tags($metaDescItem);
        $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $params->get('metaDescLimit', 150));
        $document->setDescription(K2_JVERSION == '15' ? $metaDescItem : html_entity_decode($metaDescItem));
    }

1 个答案:

答案 0 :(得分:0)

使用$description = preg_replace( '@\{.+?\}@', '', $description); - 您需要在\{之前使用},因为这些是正则表达式中的特殊字符,因此您需要使用反斜杠转义它们。< / p>