Дополнение: Отображение пробелов в начале каждой строки поста
Добавить в файле
\include\fm.class.php в функции
formatpost
перед строкой
CODE: return nl2br($string);
следующее
CODE: // заменить все пробелы в начале каждой строки до первого символа на
// и все табуляции в начале каждой строки до первого символа на 8
$string = preg_replace_callback("/^(\s+)(.*)$/m",
create_function(
'$matches',
'return str_replace(array(" ", "\t"), array(" ", " "), $matches[1]) . $matches[2];'
),
$string);
1Bot
Вариант решения проблемы в принципе хороший. Возможно, правда, лучше было бы исходный текст заключать в теги <pre></pre>, тогда и не понадобилось бы вставлять в исходный текст страницы столько html-сущностей для пробела и табуляции
Очень нужная вещь особенно когда вставляешь код - без отступов код становится трудночитаемым.
Цитата:исходный текст заключать в теги <pre></pre>
Вот
здесь говорят, что табуляция не всеми браузерами корректно обрабатывается.
yura3d пишет:Возможно, правда, лучше было бы исходный текст заключать в теги <pre></pre>, тогда и не понадобилось бы вставлять в исходный текст страницы столько html-сущностей для пробела и табуляции
Мной єтот вариант рассматривался в первую очередь, но при заключении текста в скобки <pre></pre> есть другая проблема:
в конце той же функции
formatpost стоит вызов функции
nl2br
CODE:return nl2br($string);
который в тексте внутри скобок <pre></pre> заменит все переходы на новую строку тегом <br>, и в результате получится текст с кодом в котором каждая строка будет отделятся от другой переносом строки и кодом <br>, т.е. визуально будет по пустой строке между строками текста.
Применил вариант, предложенный 1Bot - нормально работает.
Только теперь, как я понял, все посты прогоняются через подобное форматирование.
Хотя логичнее наверное это втиснуть только для текста, обрамленного тегами code? Или пойти ещё более радикально - для текста, обрамленного тегами code подключить подсветку синтаксиса, особенно учитывая, что PHP кода на форуме пруд пруди. Естественно ни на чем не настаиваю - просто мысли в слух.
NordWest пишет:Хотя логичнее наверное это втиснуть только для текста, обрамленного тегами code
Думаю что форматирование необходимо и для текста тоже, а не только для кода (в обычном тексте отступы вначале абзацев тоже важны).
Есть один минус и я вчера его реально почувствовал.
Поправлял инструкцию на инсталляцию мода.
При наличии на форуме этого дополнения код, скопированный в браузере не находится потом в редакторе.
NordWest пишет:При наличии на форуме этого дополнения код, скопированный в браузере не находится потом в редакторе.
Поподробнее опишите проблему - буду решать.
Если в редакторе внутри функции вставлены табуляторы, а потом текст кода этой функции разместить на форуме то получаем неприятный эффект. Скопированный назад из браузера код в редакторе уже не находится.
NordWest пишет:Если в редакторе внутри функции вставлены табуляторы, а потом текст кода этой функции разместить на форуме то получаем неприятный эффект.
Посмотрите внимательно на описание -- Дополнение: Отображение пробелов
в начале каждой строки поста.
Данное дополнение и не предназначено для исправлений табуляций и пробелов внутри строк, а лишь в их начале.
Действительно. Не в дополнении дело. Просто как-то первое, на что подумал.
Но вот интересно - а в чем же тогда дело?
NordWest пишет:Но вот интересно - а в чем же тогда дело?
Дело в том, что для браузеров серия табуляций или пробелов в HTML-коде является лишь разделителем между словами и при отображении показывается лишь пробелом (и то если это не начало параграфа, там вообще эти разделители не выводятся).
Спасибо, учту на будущее.
Всем добрый день! Вот и я задумался о пробелах в сообщениях и в общем форматировании текста. И вот что получается в движке exbb. По умолчанию, без дополнения 1Bot, пробелы в начале строк действительно не отображаются, сколько бы пробелов не ставь.
Идём дальше. С дополнением 1Bot ситуация немного получше, пробелы в начале строк отображаются, кроме самой первый строки. И количество пробелов правильное, такое, какое есть в исходном тексте. Один пробел в тексте, один пробел и в посту, а два в тексте, и в посту два.
Но хотелось бы, что бы пробелы верно отображались не только в начале строк, но и везде, по всему тексту. Как это сделать?
Вот проверочный текст:
Без пробелов:
00000
Один пробел между цифрами:
1 1 1 1 1 1 1 1 1
Два пробела между цифрами:
2 2 2 2 2 2 2 2 2
Три пробела между цифрами:
3 3 3 3 3 3 3 3 3
Прогрессирующий пробел между цифрами:
0 1 2 3 4 5 6 7 8 9
То есть между 8 и 9 девять пробелов. А по факту отображается 1 пробел. Убедиться в наличии пробелов можно нажав кнопку "Правка", оказывается в исходном тексте все пробелы на месте, кроме самого первого, он автоматически пропадает.
Как выправить это дело? То есть отображать абсолютно все пробелы которые есть в исходном тексте? Если бы exbb правильно отображал текст, это было бы замечательно.
Кстати проблема с пробелами есть не только в exbb, но и в других движках, даже в юкозе.