Я изменяю основную функцию библиотеки Кохана, функцию text :: auto_p () .
Функция описывает себя как "nl2br () на стероидах". По сути, он обеспечивает <br />
разрывы строк, но двойные разрывы строк заключены в теги <p>
.
Ограничение, которое я обнаружил, заключается в том, что оно будет <br />
s в элементе <pre>
. Это создаст двойные новые строки, а это не то, что я хочу. Я сделал модификацию, чтобы подобрать предварительные элементы с помощью регулярного выражения и обратного вызова, который удалит <br />
, который работает нормально.
Однако основная проблема заключается в том, что в моем тексте есть примеры кода, которые получают auto_p()
'd, и мне нужно сохранить отступ (для удобства чтения). К сожалению для меня, функция убирает начальные и конечные пробелы в строках.
Вот регулярное выражение, которое удаляет начальное пространство
$str = preg_replace('~^[ \t]+~m', '', $str);
Я не лучший гуру регулярных выражений, но я вполне уверен, что он говорит: «Получите начальные пробелы и табуляции там, где есть хотя бы одна, и замените их пустой строкой».
Я попытался удалить эту строку, но затем она добавит <br />
там, где я определенно не хочу их - в одном случае я получаю вывод, подобный этому
<ul><br />
<li>something</li>
</ul>
Как бы я изменил это регулярное выражение или код, чтобы не убирать начальный пробел внутри элемента <pre>
?
Оригинальная вспомогательная функция от Kohana доступна здесь . (прокрутите к почти дну).
Я знаю, что получу несколько ответов типа «Использовать HTML-парсер» - и хотя вы можете быть правы - существующий код просто использует регулярное выражение, и я бы предпочел более простое решение (где мне не нужно включать библиотека и т. д.).
Спасибо за ваше время.