Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: php+rss+nl2br
 
 автор: vitroot   (28.02.2010 в 07:19)   письмо автору
 
 

При генерации rss, заменяю переносы с nl2br:

$text = nl2br($news["text"]);

При этом, rss строчку с $text перестает выдавать вообще.
Если убираю nl2br() - все прекрасно выдает, кроме нормальных переносов строк.

Подскажите, чтоя делаю не так?

  Ответить  
 
 автор: sim5   (28.02.2010 в 09:15)   письмо автору
 
   для: vitroot   (28.02.2010 в 07:19)
 

И можно посмотреть ваш текст с переносами (части хватит, но сначала).

  Ответить  
 
 автор: vitroot   (28.02.2010 в 09:29)   письмо автору
 
   для: sim5   (28.02.2010 в 09:15)
 

Вот пример:

Добавить в /etc/mysql/my.cnf в секции [mysqld]:

skip-character-set-client-handshake
default-character-set=utf8
init-connect='SET NAMES utf8'
default-collation=utf8_general_ci


И /etc/init.d/mysql restart




--

  Ответить  
 
 автор: sim5   (28.02.2010 в 09:45)   письмо автору
 
   для: vitroot   (28.02.2010 в 09:29)
 

$news["text"] - где? Вы можете реальный кусочек этого текста выставить со всем его переносами, обрамив его тегом [соde][/соde]? При чем тут конфиг, если речь о rss?

  Ответить  
 
 автор: vitroot   (28.02.2010 в 09:48)   письмо автору
 
   для: sim5   (28.02.2010 в 09:45)
 

Потому что этот конфиг - это содержимое $news["text"]!


Добавить в /etc/mysql/my.cnf в секции [mysqld]:

skip-character-set-client-handshake
default-character-set=utf8
init-connect='SET NAMES utf8'
default-collation=utf8_general_ci


И /etc/init.d/mysql restart

  Ответить  
 
 автор: sim5   (28.02.2010 в 09:57)   письмо автору
 
   для: vitroot   (28.02.2010 в 09:48)
 

Если выполнить именно с тем что вы выставили:
<?
$s 
="Добавить в /etc/mysql/my.cnf в секции [mysqld]: 

skip-character-set-client-handshake 
default-character-set=utf8 
init-connect='SET NAMES utf8' 
default-collation=utf8_general_ci 


И /etc/init.d/mysql restart"
;

echo 
nl2br($s);

то получим все без проблем. В самом примении nl2br у вас нет никой ошибки.

  Ответить  
 
 автор: vitroot   (28.02.2010 в 10:11)   письмо автору
 
   для: sim5   (28.02.2010 в 09:57)
 

Что там ошибки нет - я знаю. Но выводит без nl2br() вот так:

Добавить в /etc/mysql/my.cnf в секции [mysqld]: 
skip-character-set-client-handshake default-character-set=utf8 init-connect='SET NAMES utf8'  default-collation=utf8_general_ci 

И /etc/init.d/mysql restart"; 

  Ответить  
 
 автор: sim5   (28.02.2010 в 10:26)   письмо автору
 
   для: vitroot   (28.02.2010 в 10:11)
 

Ну а как же еще должно выводить? Конечно в строку, но, это еще смотря в чем заключена строка эта, имею ввиду HTML-элементы на странице, их стили, от чего в конечном итоге может зависеть и вид строки на странице.

  Ответить  
 
 автор: vitroot   (28.02.2010 в 10:32)   письмо автору
 
   для: sim5   (28.02.2010 в 10:26)
 

Если я таким же образом через nl2br() вывожу просто на страницу - все нормально, как надо.
А если вывожу в генерации rss - то проблема и появляется

  Ответить  
 
 автор: vitroot   (28.02.2010 в 10:34)   письмо автору
 
   для: sim5   (28.02.2010 в 10:26)
 

Вот код генерации rss:



<?php

    header
('Content-type: application/xml');


    
$data="<?xml version=\"1.0\" encoding=\"utf-8\" ?> ";
    
$data.= "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">";
    
$data.= "<channel>";
    
$data.= "<title>Unix Tips</title>";
    
$data.= "<link>http://sitename.ru</link>";
    
$data.= "<description>заголовок</description>";
    
$data.= "<copyright>GPL</copyright>";
    
$data.= "<language>ru</language>";
    
$data.= "<managingEditor>info@sitename.ru</managingEditor>";
    
$data.= "<webMaster>info@sitename.ru</webMaster>";

include 
"inc/settings.php";

    
$query="SELECT id,title,tips,date,name FROM tips ORDER BY date DESC LIMIT 10";

    
$result mysql_query($query);

while(
$tip = @mysql_fetch_array($result))
    {

    
$date $tip['date'];
    
$title $tip['title'];
    
$tips nl2br($tip['tips']);
    
$name $row['name'];

    
$data.="<item>";
    
$data.="<title>".$title."</title>";
    
$data.="<link>http://sitename.ru</link>";
    
$data.="<description>".$tips."</description>";
    
$data.="<dc:creator>Администрация проекта </dc:creator>";
    
$data.="<dc:date>".$date."</dc:date>\n</item>";

    }

    
$data=$data."</channel></rss>";

    
// Выводи это всё

    
print($data);

    
?> 

  Ответить  
 
 автор: sim5   (28.02.2010 в 10:38)   письмо автору
 
   для: vitroot   (28.02.2010 в 10:34)
 

Я не знаю xml, а возможно проблема в этом.
@mysql_fetch_array($result) - вы можете объяснить зачем вы тут собаку посадили?

  Ответить  
 
 автор: vitroot   (28.02.2010 в 10:47)   письмо автору
 
   для: sim5   (28.02.2010 в 10:38)
 

Для того, чтобы в случае чего убрать лишнюю ругань. В данном случае с ней или без нее не изменится ничего.

  Ответить  
 
 автор: sim5   (28.02.2010 в 10:52)   письмо автору
 
   для: vitroot   (28.02.2010 в 10:47)
 

Нужно проверять, что возвращает запрос, и решать вопрос о выводе. А устанавливать собак куда непопадя, это...

  Ответить  
 
 автор: vitroot   (28.02.2010 в 11:01)   письмо автору
 
   для: sim5   (28.02.2010 в 10:52)
 

Не надо привязываться к тому, что не имеет значения. Собака тут ни причем совершенно.
А в таких случаях собаку я ставлю всегда на всякий случай. Ибо если запрос вернет пустой результат, посыпятся ненужные мне ворнинги

  Ответить  
 
 автор: sim5   (28.02.2010 в 11:11)   письмо автору
 
   для: vitroot   (28.02.2010 в 11:01)
 

Я не привязываюсь, просто логика обработки вашего запроса не верна, и этот промах вы пытаетесь скрыть собакой. Но коли вы считаете это нормальным, пожалуйста, вы же себе, а не мне по заказу пишите.
То, что это является корнем проблемы вашей, я и не говорил. Возможно это влияние правил xml, ну, или, стилей, гадать не буду.

  Ответить  
 
 автор: vitroot   (01.03.2010 в 04:41)   письмо автору
 
   для: vitroot   (28.02.2010 в 07:19)
 

Вобщем, тупой разговор ни о чем.
Зачем рассуждать на другие темы, если не знаешь ответа?
Решение помог найти мой хороший знакомый.

Заменяем

<?
$data
.="<description>".$tips."</description>"на  $data.="<description><![CDATA[".$tips."]]></description>";
?>


где ранее $tips определена как nl2br($tip["tips"]);

  Ответить  
 
 автор: sim5   (01.03.2010 в 05:45)   письмо автору
 
   для: vitroot   (01.03.2010 в 04:41)
 

Это вы себе ответили? Уважаемый я вам изначально сказал - я не знаю xml, и не умничал по этому поводу.
Но вто то, как вы обрабатываете свой запрос (логика скрипта), это из рук вон плохо. Впрочем, вы сами себе велосипед - нравится так, заради бога.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования