Самый быстрый способ продвинуть сайт, получи индивидуальное предложение и подарок!

Как удалить BBcode из MySQL базы WordPress

 24 июня 2018      
 MySQL      
 Комментариев еще нет      
 190

В этой статье я расскажу как удалить BBcode, а точнее заменить их на соответствующие HTML теги во всех статьях сайта на WordPress. С небольшими изменениями этот способ можно применить к любому сайту использующему базу данных MySQL.

BBcode — это разметка (язык разметки) для форматирования и оформления текста. Используются теги заключенные в квадратные скобки подобные HTML тегам. Перед выводом страницы посетителю движок сайта преобразует BBcode в соответствующие HTML теги. BBCode был придуман с целью предоставить более простой, безопасный и ограниченный по сравнению с HTML способ форматирования сообщений.

(Информация из Википедии)

Почему мне не нравится BBcode

Когда я только начал вести этот блог, то при написании статей я активно использовал BBcode, так как это упрощало и ускоряло форматирование и оформление текста. Но со временем я понял, что BBcode — это «зло». Так как во-первых используемые теги являются нестандартными, то есть не понимаются браузерами без предварительного преобразования в HTML. Что лишает ваши тесты совместимости, например при переносе статьи с одного сайта на другой, вам придется переносить и функцию декодирования BBcode.

Во-вторых большинство тегов BBcode просто копируют соответствующие HTML теги и никак не ускоряю набор и оформление текстов. Например BBcode [b]Текст[/b] соответствует HTML тегу <b>Текст</b>. Как видите разница только в скобках: квадратные или угловые.

Но конечно есть у BBcode и плюсы. Например сейчас вместо HTML тега <b>Текст</b> рекомендуется использовать тег <strong>Текст</strong>. И в случае использования BBcode вам достаточно один раз изменить код вывода в функции преобразования BBcode, а не исправлять все страницы на сайте.

Полезные теги BBcode

Я начал использовать BBcode из-за двух самых крутых на мой взгляд тегов, это коды для изображений и ссылок.

Рекомендую прочесть:  Ошибки Wordpress при работе с MySql
HTML BBcode
Тег изображения <img src="http://sitename.tld/img.png"> [img]http://sitename.tld/img.png[/img]
Тег ссылки <a href="http://sitename.tld/">http://sitename.tld/</a> [url]http://sitename.tld/[/url]

Вот они действительно упрощают написание.

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

Как удалить простые BBcode из MySQL базы WordPress

Под простыми тегами BBcode я имею ввиду те, которые копируют соответствующие HTML теги и у них совпадает синтаксис (структура) написания. Например [b]..[/b] и <strong>..</strong>.

Заменять BBcode я буду сразу в базе данных MySQL WordPress, чтобы в дальнейшем можно было отказаться от плагина преобразования. Для выполнения этой процедуры понадобится phpMyAdmin, поэтому заранее побеспокойтесь о логине и пароле для доступа:

Как удалить BBcode из MySQL базы WordPress

Нужно перейти по ссылке «SQL»:

Как удалить BBcode из MySQL базы WordPress

И выполнить следующие запросы (обратите внимание на кавычки, они разные):

UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, '[b]', '<strong>');
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, '[/b]', '</strong>');

Этим запросом мы во всех записях WordPress заменяем BBcode тег [b]..[/b] на соответствующий ему <strong>..</strong>. Содержимое тегов при этом остается неизменным.

Аналогично нужно поступить и с другими простыми тегами BBcode которые вы используете на своем сайте.

Подробнее о массовой замене текста в базе данный MySQL рекомендую почитать здесь — https://moonback.ru/page/mysql-replace

Замена сложных BBcode в базе данных MySQL на WordPress

Сложные теги BBcode, такие как [img]...[/img] или [url]...[/url] нельзя исправить простой заменой на HTML тег. Нужно использовать и преобразовывать содержимое тегов.

В PHP есть замечательная функция для преобразования по шаблону preg_replace, которая выполняет поиск и замену по регулярному выражению. Процедура преобразования BBcode для тега [img]...[/img] с помощью preg_replace выглядит следующий образом:

$content = preg_replace('|\[img(.*?)](.*?)\[/img]|si','<img src="\\2" alt="\\1" title="\\1">', $content);

Эквивалент preg_replace для MySQL

Для преобразования по регулярному выражению в MySQL базе понадобится функция REGEXP_REPLACE.

Функция regexp_replace работает не во всех версиях MySQL и MariaDB. В MySQL поддержка данной функции заявлена начиная с версии 8, я же в своих экспериментах при написании статьи использовал MariaDB 10.

Для преобразования BBcode тегов [img]...[/img] и [url]...[/url] я использовал следующий MySQL запрос:

UPDATE `wp_posts` SET `post_content` = REGEXP_REPLACE(`post_content`, '\\[img(.*?)\\](.*?)\\[\\/img\\]', '<img src="\\2" alt="\\1" title="\\1">');
UPDATE `wp_posts` SET `post_content` = REGEXP_REPLACE(`post_content`, '\\[url\\](.*?)\\[\\/url\\]', '<a href="\\1">\\1</a>');
UPDATE `wp_posts` SET `post_content` = REGEXP_REPLACE(`post_content`, '\\[url=(.*?)\\](.*?)\\[\\/url\\]', '<a href="\\1">\\2</a>');

Обратите внимание на синтаксис, квадратные скобки нужно экранировать символом двойной обратной косой черты (обратная дробь, обратный слеш) иначе они работают как регулярные выражения.

Рекомендую прочесть:  Белый экран смерти WordPress

Выводы

После использования вышеописанных замен я очистил базу данных MySQL от BBcode тегов. Что конечно не ускорило работу сайта, но позволило избавиться от еще одного WordPress плагина и привело содержимое страниц к HTML стандарту.

Поделись этой страницей с друзьями!

Прочтите это обязательно

Свежие скидки на хостинг Adman.com для читателей блога

Коллеги, как вы знаете, я участник многих партнерских программ отечественных и зарубежных хостинговых компаний ...

Вебмастеру adman vds vps купоны распродажа скидки хостинг Далее

CR1220 - батарейка для видеорегистратора RVi-HDR08LA-TA

В моем "зоопарке" пара десятков видеорегистраторов от разных производителей. Недавно один из них RVi-HDR08LA-T ...

Видео и звук ahd cctv cr1220 cr2032 cvi rvi tvi Далее

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных", на условиях и для целей определенных политикой конфиденциальности.

2018 © Технический блог
SQL - 93 | 0,448 сек. | 8.35 МБ
доступность сайта