Руководство по запросу замены строки - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь программно заменить устаревший HTML новым шорткодом в таблице WP_Posts> post_content.

Цель:

Заменить

<span class="dropcap">%</span>

с

[dropcap class='post-dropcap']%[/dropcap]

где% - любой символ в строке

Есть еще один кикер: мне нужно найти позицию строки, где начинается этот код, чтобы я мог поместить новую строку в ту же начальную позицию, как и содержимое перед этим шаблоном строки. Мне также нужно хранить символ% для каждой строки, поскольку каждая строка имеет различный символ в зависимости от набираемого слова.

Я предполагаю, что мне нужно получить strpos () '<' соответствующей строки. </p>

Затем я могу сохранить значение между тегами в псевдониме.

Затем мне нужно удалить соответствующую строку и заменить ее новым кодом, используя псевдоним для ссылки на символ, который был удален ранее.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Начиная с MySQL 8, вы должны иметь возможность использовать REGEXP_REPLACE для такой задачи.

В каждой строке HTML вы будете искать строку '<span class="dropcap">(.)</span>', где точка обозначает любой символ, а в скобках запоминается этот контент.

Вы бы заменили на '\[dropcap class=''post-dropcap''\]\\1\[/dropcap\]', где \\1 обозначает персонажа, которого мы только что вспомнили.

update html_lines
set line = regexp_replace(line, '<span class="dropcap">(.)</span>',
                                '\[dropcap class=''post-dropcap''\]\\1\[/dropcap\]')

Это также работает для нескольких вхождений строки в строке.

0 голосов
/ 08 ноября 2018

Вы можете получить значение %, выполнив:

select substring_index(substring_index(col, '<', -1), '>', 1) as central_value

Затем вы можете объединить, чтобы получить то, что вы хотите:

select concat('[dropcap class=''post-dropcap'']',
              substring_index(substring_index(col, '<', -1), '>', 1),
              '[/dropcap]'
             )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...