У меня есть странная ситуация при извлечении информации из базы данных для отображения веб-страницы.
Администратор копирует и вставляет информацию в поле 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 оказать помощь?
Я ценю многословные примеры, поскольку я очень новичок в этом. Размышляя о будущем, что, если она время от времени вклеивается в разные типы пули?
s/•/<br />•/g
Вы внимательно изучили сообщение об ошибке, которое вы получили, когда пытались это сделать? Если вы используете косую черту как разделитель в s///, тогда любые слэши в шаблоне или замене должны быть экранированы.
s/•/<br \/>•/g
Но чтобы сделать его более читаемым, используйте разные разделители.
s|•|<br />•|g