Фильтрация новости
24.04.2010Голосование
| Тип | Ошибка |
| Состояние | Исправлено |
| Приоритет | Высокий |
| Версия | 3.49 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | |
| Исполнитель | Блоголётчик |
Заметил одну бяку, когда вставляешь тег code движок внутрь этого контейнера помещает еще pre, а если ставишь pre в середине текста то разрывает текст и воопше и параграфы ставит и разрыв строки.
Короче что то ужасное...
Приходится уже после публикования редактиривать еще раз только полным редактированием чтоб убрать все эти бяки.
Движок же должен переносить в полную новость строгим реплейсом что взял то и поставил, а в анонс и в рсс только обрезать лишнее.
Вот для наглядности пример, что было а что стало:
Код
Так было:
<p>Расскажу вам как ускорить загрузку PHP страниц блога с помощью <pre>zlib</pre> и двух строчек кода, добавленных в header.php</p>
А так стало:
<p>Расскажу вам как ускорить загрузку PHP страниц блога с помощью<br>
библиотеки </p>
<pre>zlib</pre>
и двух строчек кода, добавленных в header.php.<br>
RSS комментарии к этой записи
Рубрики: Ошибки
Комментарии (11) на запись “Фильтрация новости”
Оставить комментарий
А да единственно что он должен делать если что то стоит в тегах code и pre это переводить
< в <
> в >
А иначе отображать все как есть.
Ок, но тогда ка фильтровать текст внутри code? Сейчас точный код это:
return sprintf('<code><pre>%s</pre></code>', self::specchars($found[1]));
где spechar это:
return str_replace(
array('"', "'", '$'),
array('"', ''', '$'),
htmlspecialchars($s));
соответственно любые теги внутри code превращаются в символы включая теги pre. Может быть кот корежжется из за вставки preвне code?
нада
return sprintf('<code>%s</code>', self::specchars($found[1]));
и
return sprintf('<pre>%s</pre>', self::specchars($found[1]));
тогда они только по отдельности будут работать нормально или на <pre> вообще не ставить str_replace , но code однозначно нада один, код он и есть код.
Я думаю нада делать замены, а то иначе, если к примеру нада вывести такий код:
<code>%s</code> то мы его заключим в <pre><code>%s</code></pre> и выведем и
так же выведем <pre>%s</pre> заключив его <code><pre>%s</pre></code>
и даже такую комбинацию он выведет тогда корректно
<pre><code><pre>%s</pre></code></pre> => <code><pre>%s</pre></code>
а в данный момент что интересно бы вывел движок если ему такое вписать в новость, а вот что:
<pre><code></code><pre><pre>%s</pre></pre></pre>
Кощмар правда? а вот такую комбинацию шас выводит:
<pre><code>%s</code></pre> => вот так <pre><code></code><pre>%s</pre></pre>