Вывод текста из БД. Сложности

Merle

Guest
Вывод текста из БД. Сложности

Проблема.
PHP 4.0, MySQL 3.23.53 Apache
Есть поле в базе данных типа mediumtext. Текст короче...
Вывод его напрямую при помощи, скажем:
<?php echo row_TechGallery['description']; ?>
дает нормальный результат, НО! съедаются символы разметки. Т.е. текст идет слитно, без искомых переносов, которые в поле в базе на самом деле есть. Я проверял...
Так вот вопрос: какое есть оптимальное решение для хранения и вывода разметки - переносов, списков и прочая?

Я в принципе представляю себе такие варианты:
1) Подменять в исходном тексте спецсимволы на html-тэги разметки
2) хранить html тэги прямо в тексте

Но ежели кто расскажет более интересный и правильный/логичный вариант - очень бы хотелось увидеть!
А главное, не понятно в каком месте съедаются существующие символы разметки ;-)
 

Фанат

oncle terrible
Команда форума
Merle
В твоем вопросе все понятно, кроме вот этого:
не понятно в каком месте съедаются существующие символы разметки
ты уверен, что они съедаются?
Что значит - съедаются? В чем это выражается? Ты внимательно смотрел? Может быть, ничего не съедается, а тебе это только кажется?
 

Merle

Guest
съедаются потому что результат в html выдается без всяких разметок... и что с этим делать лучше всего?

-~{}~ 21.02.05 23:26:

особенно интересует например, список, скажем, маркированный:
- строка 1;
- строка 2;
- строка 3.
А в качетве маркера скажем, галочка, или еще чего. Варианты решения у меня есть, просто я проверяю как это реализуют другие. Может будет интереснее?
 

Demiurg

Guest
я дал тебе вполне конкретный совет. Я думал, что именно за советом ты сюда и пришел.
 

Merle

Guest
я писал что вижу два варианта, если есть более интересные варианты - изложи. а так, нефиг писать.
 

Demiurg

Guest
в общем случае хранение html а БД нецелесообразно.
 

Merle

Guest
тогда мне видится только вставка html-тэгов в текст при выводе.

-~{}~ 21.02.05 23:54:

я поясню: не хочу изобретать велосипедов. если кто уже думал над этим, может нашел более изящный способ
 

Demiurg

Guest
хорошо, что видется, а теперь поясни, все же про "съедаются". То, что визуальное отображение в браузере не соответсвует визуальному отображению в текстовом редакторе, не называется съеданием, надеюсь ты это понимаешь.
 

Merle

Guest
мы будем разбираться в терминологии?? в текстовом редакторе, знаешь, тоже "визуальное отображение". Просто построенное на другой кодировке. в сущность разметка, как таковая была придумана задолго до html, и присутствовала уже во времена DOS. Мы же не будем поднимать историю и обсуждать термины? конечно меня интересует где "съедает"... думается что php никак не воспринимает разметку текста, и преобразование наверное надо делать вручную. Скажем, списки. Или форматировать текст чтобы потом опять же вручную вставлять тэги разметки. Кажется это вполне конкретный вопрос. Собственно, если ни у кого нет интересных предложений - то я решу эту проблему, по своему наиболее понятным и логичным способом, для меня
 

Demiurg

Guest
никто ничего не съедает. Если ты сделаешь view source получившегося результата ты к своему удивлению увидишь, что "разметка" осталась та же.
 

Merle

Guest
все, насчет "съедания" все встало на свои места. точно...
а насчет переноса - вот я и хочу его сделать понятным для html. как это сделать наилучшим образом?

-~{}~ 22.02.05 02:47:

Ага. ну вот, есть ведь такая процедура.
И всего-то надо было....
Кому интересна проблема:
для замены переноса в тексте понятным html-тэгом нужно воспользоваться nl2br. Есть еще полезная wordwrap.
А вот со списками сложнее, здесь видимо нужно все-таки перекодировать вручную... например, если нужно в маркированном списке вывести специальный маркер вместо "-", то очевидно что нужно найти вхождения строки "-" в тексте и заменить их на строку типа "image src="". Кажется, для этого подходит substr_replace() и некоторые другие функции.

-~{}~ 22.02.05 02:58:

да, жаль нет функции которая бы и списки приводила в тэги. хотя конечно стандартные списки не слишком красивые, но все же, такая функция была бы логичным продолжением nl2br
 

yugene

Отошел от дел
Автор оригинала: Merle
да, жаль нет функции которая бы и списки приводила в тэги. хотя конечно стандартные списки не слишком красивые, но все же, такая функция была бы логичным продолжением nl2br
Во-первых, разберись с терминами. Разметка в ДОСе и HTML-разметка (MarkUp) - немножко разные вещи. По-сути дела, разметка в ДОСе - вовсе не разметка, а набор байт, которые каждый визуальный редактор интерпретировал по-своему. Например, на символ 0х07, если не ошибаюсь, кто то выводил иероглифик, а кто-то издавал писк спикером :) HTML-разметка же для того и создавалась, как стандарт - чтобы текст оформлять.

Во-вторых, я так понимаю, у тебя в базе лежит именно ДОСовская "разметка". Зацени тэг <PRE>.
 

Merle

Guest
Термины? а что не так? что значит разметка в ДОСе? это у вас немножно неправильные понятия. ДОС - это есть система, типа дискет-оперэйшен-систем, а формат текстов (точнее кодировка) в те времена был ASCII. по этой кодировке один байт являлся символом. Если я не ошибаюсь, только первая половина, до 128 (без верхнего бита) использовалась, остальная же была дополнительной, что было использовано при локализациях. Туда в частности прописывался и русский шрифт.
Да и мне собственно, не нужно знать какая именно кодировка, просто хотелось максимально красивого и изящного решения для вывода в html.
 

Фанат

oncle terrible
Команда форума
Автор оригинала: Merle
в сущность разметка, как таковая была придумана задолго до html, и присутствовала уже во времена DOS.
Автор оригинала: Merle
Термины? а что не так? что значит разметка в ДОСе? это у вас немножно неправильные понятия.
я думаю, всем понятно, что автор заврался.
И эти отмазки не тянут на дискуссию.
вопрос благополучно решён, а доказывать этому человеку, что он неправ не имеет смысла.
посему тема закрывается.

-~{}~ 25.02.05 16:40:

я думаю, самое время переместить тему на своё законное место - в корзину
 

Merle

Guest
деваться некуда от супер-профи. сам придурок, не нравится - можешь не отвечать, а писать всякую лабуду никто тебя не просил. думает он...
 
Сверху