Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Не работают конструкции если значение с символом ' Как решить этот баг?

Не работают конструкции если значение с символом ' Как решить этот баг?


     13.02.2023    tags, xfields, custom    Шаблоны (TPL), Общие вопросы по PHP    524

вопрос
Не работают конструкции если значение с символом ' например: Emma D'Arcy

{custom tags="[xfvalue_name]" template="shortstory"}
{custom tags="Emma D'Arcy" template="shortstory"}

{custom xfields="[xfvalue_name]" template="shortstory"}
{custom xfields="Emma D'Arcy" template="shortstory"}

Версия DLE 16.0, на 15.2 также не работали, возможно на ранних версиях тоже не работает. Тестил на чистых системах. Может кто сталкивался и знает как решить этот баг?

Ответил: Gvn


{custom xfields="[xfvalue_name]" template="shortstory"}



{custom tags="[xfvalue_name]" template="shortstory"}

9 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 13 февраля 2023 16:06 -

Может поможет обратный слеш перед одинарной кавычкой?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Gvn
Юзер

Gvn - 13 февраля 2023 16:35 -

Значение в доп.полях, оно выводится в теле новости. Судя по базе данных, значения доп. полей экранируются name|Emma D\'Arcy. Проблема по логике где-то в custom tags и custom xfields.

TeraMoune
Эксперт

TeraMoune - 13 февраля 2023 19:57 -

Это не совсем баг, просто такие элементы заменяются на безопасные html сущности.
Нужно добавить в функции custom_print в массиве параметров xfields и tags, перед $value = $db->safesql(trim($value));
$value = str_replace( "'", ''', $value );

Тестовый репозиторий установки плагинов: teramoune

Gvn
Юзер

Gvn - 13 февраля 2023 21:10 -

Добавил, но не работает как и раньше(

lutskboy
Эксперт

lutskboy - 13 февраля 2023 21:37 -

$value = $db->safesql(trim($value));
на
if (strpos($value, "'") !== false) {
	$value = $db->safesql($db->safesql($db->safesql(trim($value))));
} else {
	$value = $db->safesql(trim($value));
}

TeraMoune
Эксперт

TeraMoune - 13 февраля 2023 22:10 -

Добавил, но не работает как и раньше(

Значит не добавили...

upd: думал поле с типа перекрёстных ссылок. а там нету кавычек одинарных.

Тестовый репозиторий установки плагинов: teramoune

Gvn
Юзер

Gvn - 13 февраля 2023 23:45 -

Цитата: lutskboy

Заработал custom xfields, выводит новость Emma D'Arcy. А вот custom tags не работает. Теги пишутся в базу без экранирования через запятую, так понимаю обрезается на Emma D.

TeraMoune
Эксперт

TeraMoune - 14 февраля 2023 01:12 -

Одинарные кавычки из регулярки убрать в квадратных скобках.
preg_match( "#tags=[\"](.+?)[\"]#i", $param_str, $match )

Тестовый репозиторий установки плагинов: teramoune

Gvn
Юзер

Gvn - 14 февраля 2023 01:28 -



custom tags теперь тоже работает. Спасибо TeraMoune и lutskboy!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх