Joomla: K2 - как удалить фигурные скобки из мета-описания с помощью preg replace


Мне нужно убрать некоторые фигурные скобки из мета-описания, которое создается joomla/K2.

Я нашел два php решения для удаления ненужных фигурных скобок:

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

И

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

Существуют различные фигурные скобки, которые управляют содержимым моего приложения:

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

Лучшим решением было бы избавиться от любой фигурной скобки в выводе мета-описания.

Я новичок в php, и я не уверен, какая функция является правильной.

Следующая проблема заключается в том, что я не знаю, куда вставить функцию в файл php K2.

Я думаю, что нашел правильный файл 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 2

1 ответ:

Use $description = preg_replace( '@\{.+?\}@', '', $description); - вам нужно использовать \ Перед { и }, потому что это специальные символы в регулярном выражении, поэтому вам нужно экранировать их обратной косой чертой.