0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 327 Просмотров
*

vitzer

  • Захожу иногда
  • 297
  • 5 / 0
Замена Unicode в attribs
« : 15.08.2020, 12:23:43 »
Пытался произвести массовое изменение title "заголовок страницы в браузере" через phpmyadmin.
В БД заголовок прописан в поле attribs через Unicode: \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.
Команда "UPDATE xxx_content SET attribs" почему-то не срабатывает.
Либо не видит unicode, либо полностью очищает attribs (если в REPLACE attribs загнать в кавычки 'attribs', т.е.
UPDATE xxx SET yyy = REPLACE ('yyy', 'abc','def' )).
Кто знает, как правильно составить команду?
В чем отличие от стандарта UPDATE xxx SET yyy = REPLACE (yyy, 'abc','def' )?
« Последнее редактирование: 15.08.2020, 15:45:42 от vitzer »
*

sivers

  • Завсегдатай
  • 1425
  • 194 / 0
Re: Замена Unicode в attribs
« Ответ #1 : 15.08.2020, 17:03:31 »
В чем отличие от стандарта
отличие в том, что 'yyy' - это строка из 3-х символов, в которой производится замена, а yyy (либо `yyy` - тут апостроф, что над Ё) - это уже значение поля yyy.
На связи в телеге @sivers
*

vitzer

  • Захожу иногда
  • 297
  • 5 / 0
Re: Замена Unicode в attribs
« Ответ #2 : 15.08.2020, 17:11:35 »
отличие в том, что 'yyy' - это строка из 3-х символов, в которой производится замена, а yyy (либо `yyy` - тут апостроф, что над Ё) - это уже значение поля yyy.
Так как правильно, знаете? Ни один из вариантов не срабатывает.
Я регулярно пользуюсь массовыми заменами, но тайтл еще ни разу не менял.
*

sivers

  • Завсегдатай
  • 1425
  • 194 / 0
Re: Замена Unicode в attribs
« Ответ #3 : 15.08.2020, 17:17:15 »
Так как правильно, знаете?
правильно - указывать имя поля все же.
Но применительно к вашей задаче - не знаю ответа. Не уловил что именно вы хотите сделать и что на что поменять. В attribs скорее всего и вовсе json лежит. Я б, наверное, прочитал строки в php, распаковал json и запаковал заново с опцией JSON_UNESCAPED_UNICODE, чтоб уникод не заменялся. Что-то вроде
Код
$row->attribs = json_encode(json_decode($row->attribs), JSON_UNESCAPED_UNICODE);
Может и средствами mysql это можно - не знаю. Вот пример правки тайтла в json - посмотрите в эту сторону:
Код
UPDATE #__menu
SET params =
        JSON_SET(params ,
            '$.\"title\"', 'My new title'
        )
WHERE 1
На связи в телеге @sivers
*

vitzer

  • Захожу иногда
  • 297
  • 5 / 0
Re: Замена Unicode в attribs
« Ответ #4 : 15.08.2020, 17:29:37 »
PDATE #__menu
SET params =
        JSON_SET(params ,
            '$.\"title\"', 'My new title'
        )
WHERE 1

К сожалению, тоже не совсем вас понял.

Я пытаюсь внести изменения в базу данных через phpMyAdmin, чтобы не ковырять ручками каждую страничку. Проблем с отображением страниц никаких нет, и декодировки не требуется.

Прежде менял записи в attribs, но для других параметров, например, отображения авторов, ссылок категории и т.п. А вот тайтл страницы в этом поле прописан в уникоде, и стандартная схема поиска и замены данных не работает:

ни так

Цитировать
UPDATE `xxx_content` SET `attribs` = REPLACE (attribs, '- \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438','\u002d\u0020\u0440\u0435\u0441\u0443\u0440\u0441\u002c\u0020\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0020\u0438\u0020\u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438')

ни так

Цитировать
UPDATE xxx_content SET attribs = REPLACE (attribs, '- \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438','\u002d\u0020\u0440\u0435\u0441\u0443\u0440\u0441\u002c\u0020\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0020\u0438\u0020\u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438')

А так

Цитировать
UPDATE xxx_content SET attribs = REPLACE (`attribs`, '- \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438','\u002d\u0020\u0440\u0435\u0441\u0443\u0440\u0441\u002c\u0020\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0020\u0438\u0020\u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u0438')

поле attribs становится пустым

 ! *ОХ-Х-Х* *suicide*




« Последнее редактирование: 15.08.2020, 17:35:08 от vitzer »
*

vitzer

  • Захожу иногда
  • 297
  • 5 / 0
Re: Замена Unicode в attribs
« Ответ #5 : 15.08.2020, 17:42:35 »
sivers,

Я вас все-таки понял и нашел-таки такую же тему Замена выражения в title

Похоже, замену таким способом я не осилю  :o
« Последнее редактирование: 15.08.2020, 17:47:38 от vitzer »
*

ProtectYourSite

  • Живу я здесь
  • 2072
  • 111 / 4
  • Безопасность вебсайтов
Re: Замена Unicode в attribs
« Ответ #6 : 15.08.2020, 19:36:07 »
Вместо 'My new title' replace заюзать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

str_replace() и замена произвольного числа знаков, как?

Автор x1

Ответов: 3
Просмотров: 283
Последний ответ 29.07.2020, 18:05:54
от robert
Замена выражения в title

Автор AlexB

Ответов: 9
Просмотров: 289
Последний ответ 25.02.2020, 09:38:20
от AlexB
Замена Яндекс Карты

Автор Michail19821982

Ответов: 2
Просмотров: 244
Последний ответ 19.09.2018, 15:17:44
от lexxbry
Замена фона на картинку

Автор Dionis0.618

Ответов: 16
Просмотров: 506
Последний ответ 11.09.2018, 13:47:33
от Dionis0.618
Вывод значений атрибутов материала ($item->attribs)

Автор goga_pgasovav

Ответов: 2
Просмотров: 494
Последний ответ 14.07.2018, 14:28:37
от goga_pgasovav