keks88 1 Опубликовано: 13 апреля 2016 Рассказать Опубликовано: 13 апреля 2016 (изменено) Заметил такое, что, скорей всего, после перестроения публикаций это произошло. Где-то процентов 20-30 новостей (от общего числа примерно 6400) bbcode тег изображений конвертировался в html, причём не совсем корректно. Пример, допустим новость имеет заголовок Страница на дле , изображение вставлялось например так: [center][img=http://musite.ru/uploads/posts/2009-11/kartinka.jpg][/center] а теперь оно превратилось вот в это: [center]<img src="http://musite.ru/uploads/posts/2009-11/kartinka.jpg" alt="'Страница" - title="'Страница" - />[/center] То есть в альт и титл обрезался заголовок до первого слова и перед ним какая-то одинарная верхняя кавычка. Причём никакой зависимости не обнаруживается, ничего общего между такими новостями нет, всё как-то хаотично, здесь изменилось, здесь не изменилось. Если по новой вставить картинки то так и остаётся как надо. DLE 11 Такие дела Изменено 13 апреля 2016 пользователем keks88 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 13 апреля 2016 Рассказать Опубликовано: 13 апреля 2016 Чтобы найти зависимости, нужно видеть исходный код HTML новости до перестроения, не BB теги, а именно HTML код, который храниться в базе данных. Возможно она содержит некорректный код, например в момент первоначального создания новости, она создавалась с камими либо правками в парсере. Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 14 апреля 2016 Рассказать Опубликовано: 14 апреля 2016 Автор если бы были правки в парсере, то все бы новости за тот период были такими, да и ничего особенного в создании не было, например одна картинка и текст. Всё. Да и на то пошло раньше dle сам трансформировал html в bbcode, а тут наоборот, вот что интересно Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 14 апреля 2016 Рассказать Опубликовано: 14 апреля 2016 5 часов назад, keks88 сказал: если бы были правки в парсере, то все бы новости за тот период были такими Не факт, зависит от самих правок. 5 часов назад, keks88 сказал: Да и на то пошло раньше dle сам трансформировал html в bbcode, а тут наоборот, вот что интересно Ничего наоборот нет и быть не может. DLE трансформирует HTML код обратно, только тот, который создан именно при помощи ББ тегов. Новости хранятся в БД именно в готовом HTML коде, а не в ББ тегов, поэтому конвертации наоборот быть не может. Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 14 апреля 2016 Рассказать Опубликовано: 14 апреля 2016 Автор Посмотрел исходный код таблицы до перестроения, зависимость действительно какая-то есть. Не понятно, почему только одни картинки обрабатывались так, а другие по другому Вот код сломавшейся картинки <img src=\"/uploads/posts/2009-07/1246628129_mainpage.jpg\" alt=\'СРУБ СВОИМИ РУКАМИ\' title=\'СРУБ СВОИМИ РУКАМИ\' /> А вот которая не сломалась: <img src=\"/uploads/posts/2009-07/1246577272_350x263x123pirania.jpg\" alt=\"В реках Волгоградской области появились пираньи\" title=\"В реках Волгоградской области появились пираньи\" /> Добавлены новости были в один день Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 14 апреля 2016 Рассказать Опубликовано: 14 апреля 2016 (изменено) Автор Кажется нашёл ещё одну зависимость - поломались новости до 5 марта 2011 , с 6 марта уже нормальные, а до 5 марта которые не поломанные были редактированы ещё после этой даты, то есть пересохранены. То есть это либо версии до 9.2 или 9.3, после которых парсер стал работать как-то по другому Цитата Добавлены новости были в один день но та которая не поломалась была отредактирована например 19.11.2011 ! То есть похоже что до версии 9.2 или 9.3 парсер обрабатывал картинки как то иначе Изменено 14 апреля 2016 пользователем keks88 Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Автор 10 часов назад, keks88 сказал: Кажется я понял в чём дело, дело в скрипте. Берём файл parse.class.php от ДЛЕ 8.2, оттуда копируем: if( $align != "left" and $align != "right" ) $align = ''; if( preg_match( "/[?&;%<\[\]]/", $url ) ) { if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]"; else return "[img=" . $url . "]"; } $url = $this->clear_url( urldecode( $url ) ); if( $url == "" ) return; if( $option[1] != "" ) { $alt = htmlspecialchars( strip_tags( stripslashes( $option[1] ) ), ENT_QUOTES, $config['charset'] ); $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" "; } else { $alt = htmlspecialchars( strip_tags( stripslashes( $_POST['title'] ) ), ENT_QUOTES, $config['charset'] ); $alt = "alt='" . $alt . "' title='" . $alt . "' "; } И заменяем в актуальной версии if( $align != "left" and $align != "right" ) $align = ''; if( preg_match( "/[?&;%<\[\]]/", $url ) ) { if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]"; else return "[img=" . $url . "]"; } $url = $this->clear_url( urldecode( $url ) ); $info = $url; $info = $info."|".$align; if( $url == "" ) return; if( $option[1] != "" ) { $alt = htmlspecialchars( strip_tags( stripslashes( $option[1] ) ), ENT_QUOTES, $config['charset'] ); $info = $info."|".$alt; $caption = "<span class=\"highslide-caption\">" . $alt . "</span>"; $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" "; } else { $alt = htmlspecialchars( strip_tags( stripslashes( $_POST['title'] ) ), ENT_QUOTES, $config['charset'] ); $caption = ""; $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" "; } Создаём новость с картинкой и видим исходный код в базе данных. Альт и титл с одинарными кавычками! Воозвращаем parse.class.php в исходное состояние, открываем редактирование новости - картинка поломана. Значит до ДЛЕ 8.2 включительно парсер создавал альт и титл с одинарными кавычками, и в 11 версии похоже это не учтено. Ну и вопрос, что можно сделать, чтобы поправить, хотя бы вручную методом пересохранения? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Что то вы напутали с изменениями и правками, эти два участка кода от разных функций, которые обрабатывают совсем разные ББ теги. Видимо поэтому и проблема у вас, также ранее что-то некорректно правили в парсере, и он создал вам неправильный код, который не распознается оригинальной версией. Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Автор Я парсер не трогал никогда, это сейчас ради проверки сделал. Значит вы хотите сказать, что вот эта часть кода взятая от 8.2, скачанная с вашего сайта, обрабатывает не ББ теги картинок? function build_image($url = "", $align = "") { global $config; $url = trim( $url ); $url = urldecode( $url ); $option = explode( "|", trim( $align ) ); $align = $option[0]; $img_extra = " "; if( $align != "left" and $align != "right" ) $align = ''; if( preg_match( "/[?&;%<\[\]]/", $url ) ) { if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]"; else return "[img=" . $url . "]"; } $url = $this->clear_url( urldecode( $url ) ); if( $url == "" ) return; if( $option[1] != "" ) { $alt = htmlspecialchars( strip_tags( stripslashes( $option[1] ) ), ENT_QUOTES ); $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" "; } else { $alt = htmlspecialchars( strip_tags( stripslashes( $_POST['title'] ) ), ENT_QUOTES ); $alt = "alt='" . $alt . "' title='" . $alt . "' "; } Что тогда она обрабатывает? Интересует особенно вот это: $alt = "alt='" . $alt . "' title='" . $alt . "' "; вот они эти кавычки Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 8 минут назад, keks88 сказал: Значит вы хотите сказать, что вот эта часть кода взятая от 8.2, скачанная с вашего сайта, обрабатывает не ББ теги картинок? То что вы привели сейчас это код обработки картинок, а то что ранее, один из вариантов, а именно второй не для обычных картинок. 9 минут назад, keks88 сказал: вот они эти кавычки Кавычки здесь совершенно не причем. Скрипт DLE обрабатывает одинаково что одинарными кавычками, что с двойными кавычками. Это вообще код перевода из ББ тегов, в HTML, а у вас не обрабатываются наоборот из HTML в ББ теги. У вас код остается в HTML, а должен в ББ код переводится. Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Автор Только что, celsoft сказал: Скрипт DLE обрабатывает одинаково что одинарными кавычками, что с двойными кавычками. Попробовал с одинарными кавычками, они у меня сломались например Вот этот код: <img src="http://dle-news.ru/templates/Default/images/box.jpg" alt='DataLife Engine' - title='DataLife Engine' - /> Стал таким: <img src="http://dle-news.ru/templates/Default/images/box.jpg" alt="'DataLife" - title="'DataLife" - /> Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Нет, одинарные кавычки, они и должны ломаться, потому как это некорректный с точки зрения парсера HTML код, кавычки согласно стандартнам должны быть двойными. Но вы же публиковали ББ код, и соответственно он должен обраться переводиться в ББ код, в котором нет ни двойных ни одинарных кавычек, а этого у вас не происходит. Вот в чем проблема, проблема в том что ваш HTML не возвращается в ББ код. Понимаете? Т.е. проблема заключается не в кавычках, а в том что HTML не переходит в ББ теги, где кавычек уже нет. Если код у вас этот добавлялся не при помощи ББ тегов, а в виде чистого HTML, то повреждение конечно будет, потому как он не валиден. Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 Автор Только что, celsoft сказал: У вас код остается в HTML, а должен в ББ код переводится. Он и был ББкод до перестроения, версия 8.2 создавала титлы и альты с одинарными кавычками в базу данных, после перестроения сейчас они сломались. В моём пятом сверху комментарии я же привёл пример то что сломалось а что нет, и там где сломалось стоят одинарные кавычки, которые создавал парсер 8.2 Только что, celsoft сказал: Вот в чем проблема, проблема в том что ваш HTML не возвращается в ББ код. Понимаете? Он не возвращается, потому что сломался после перестроения У меня только одно предложение, установить 8.2, добавить картинку, обновить до 11 и посмотреть что с ней будет Цитата Ссылка на сообщение Поделиться на других сайтах
keks88 1 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 (изменено) Автор 9 минут назад, celsoft сказал: одинарные кавычки, они и должны ломаться, потому как это некорректный с точки зрения парсера HTML С точки зрения простого человека, они должны конвертироваться в двойные, а не ломаться, что и было на последующих версиях, что и обьясняет то, что новости которые были отредактированы они не сломались, так как кавычки стали двойными. Я этого конечно не мог видеть какие там кавычки, всё всплыло только сейчас И вообще дело не в ББ коде и не в штмль коде и как оно выглядит при редактировании, а в том что альт и титл стали обрезанными до первого слова Изменено 15 апреля 2016 пользователем keks88 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 15 апреля 2016 Рассказать Опубликовано: 15 апреля 2016 12 минуты назад, keks88 сказал: а не ломаться, что и было на последующих версиях Никогда такого не было. Всегда для чистого HTML требовались именно двойные кавычки, начиная с самой первой версии DLE, это я могу сказать точно. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.