Количество символов в HTML, в поле типа TEXT, БД PostgreSQL

85
07 марта 2022, 08:10

Подскажите, как можно подсчитать количество символов в поле типа TEXT в БД PostgreSQL, подсчитать количество символов без пробелов, HTML-ссылок, спец. символов?

Пример текста поля:

<p>Каждый месяц в проходят заседания клуба в киноцентре «Рекорд». С 14 по 16 декабря нижегородцев ждет мини-фестиваль клуба «in extremis esse» («на кромке бытия» – лат.). В программе мероприятия 6 фильмов, 7 творческих встреч с кинорежиссерами – создателями фильмов, 6 острых социальных проблем.</p>

Answer 1

Вы можете узнать длину строки, убрав все ненужные символы регулярным выражением. Пример для латинского текста:

SELECT length(regexp_replace('Hello world!', '[^a-zA-Z]', '', 'g'));
-- Output:
--
--   length 
--  --------
--       10
--  (1 row)

Для того, чтобы эффективно работать с HTML, вам нужен полный HTML-парсер, которого в SQL нет. Вариант хуже и проще:

SELECT length(
         regexp_replace(
           regexp_replace('<p>Hello world!</p>', '<.*?>', '', 'g')
         , '[^a-zA-Z]', '', 'g'
         )
       )
;
-- Output:
--
--   length 
--  --------
--       10
--  (1 row)
Answer 2

Спасибо за ответы, решил проблему другим путем, на стороне PHP вычисляю количество символов. а потом просто заполняю в таблице поле со значением, так не нужно HTML парсинам на стороне sql заморачиваться.

READ ALSO
Как изменить кодировку сайта

Как изменить кодировку сайта

Как перевести сайт с UTF8 на windows-1251?

155
Вставка видео на адаптивный сайт

Вставка видео на адаптивный сайт

Вопрос такойНеобходимо сделать нечто подобное как на фото

100
Ошибка &#39;TypeError: Cannot read property &#39;appendChild&#39; of undefined&#39; при выводе json в виде doom дерева

Ошибка 'TypeError: Cannot read property 'appendChild' of undefined' при выводе json в виде doom дерева

Есть данные json, полученные с сервераПытаюсь вывести их в виде дерева на страничку html

104
Не убирается класс .active

Не убирается класс .active

Что я делаю не так? Хочу убрать классactive при повторном клике, а он заново добавляется

150