Как добавить HTML-разрывы перед буквенным списком • с помощью регулярных выражений?

0

У меня есть странная ситуация при извлечении информации из базы данных для отображения веб-страницы.

Администратор копирует и вставляет информацию в поле mediumtext latin1_swedish_ci (столбец описания).

В данных есть • пули, а не <li>.

Я уже делаю небольшое форматирование перед отображением в Perl с помощью:

my $string = $Description;
my @sentences = split(/(?:(?<=\.|\!|\?)(?<!Mr\.|Dr\.)(?<!U\.S\.A\.)\s+(?=[A-Z]))/, $string);

for (@sentences) {
#TRIED THIS $_ =~ s/•/<br />•/g;
print qq~ $_ <br /><br />~;
}

Что хорошо работает, делая новые строки после периодов. Нет никаких претензий.

Тем не менее, "маркированные" списки запускаются вместе, как List•foo•bar•nonewline.

Очевидно, мне хотелось бы:

List

•foo

•bar

•nonewline

Возможно ли это? Старое правило "мусор, мусор" убивает этот?

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

Может ли HTML:: FormatText оказать помощь?

Я ценю многословные примеры, поскольку я очень новичок в этом. Размышляя о будущем, что, если она время от времени вклеивается в разные типы пули?

  • 0
    Извините, приведенный выше пример списка получился с двойным интервалом. Желаемый холост.
  • 0
    Еще одно замечание: в самой базе данных форматирование правильное!
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ
s/•/<br />•/g

Вы внимательно изучили сообщение об ошибке, которое вы получили, когда пытались это сделать? Если вы используете косую черту как разделитель в s///, тогда любые слэши в шаблоне или замене должны быть экранированы.

s/•/<br \/>•/g

Но чтобы сделать его более читаемым, используйте разные разделители.

s|•|<br />•|g

Ещё вопросы

Сообщество Overcoder
Наверх
Меню