ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (2): [1] 2 »   

> Без описания
Defenderyk
Отправлено: 11 сентября 2009 — 08:41
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




есть код
CODE:
$news_news = $data['news_breaks'] == "y" ? nl2br(stripslashes($data['news_news'])) : stripslashes($data['news_news']);
$news_full = $data['news_extended'] == "y" ? nl2br(stripslashes($data['news_extended'])) : stripslashes($data['news_extended']);
/////
echo " <item>
";
echo "<title>".$data['news_subject']."</title>
";
echo "<link>".$settings['siteurl']."news.php?readmore=".$data['news_id']."</link>
";
echo "<description><![CDATA[".$news_news."]]></description>";
echo "".$news_full."
";


как сделать, чтобы при выводе поля $news_news. символы заменялись

Цитата:

& на &amp;
< на &lt;
> на &gt;
' на &apos;
" на &quot;


если не трудно, то сразу на этом примере, так мне будет потом понятнее
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 09:20
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




CODE:
echo htmlspecialchars('строка');

хотя хтмлспешиалчарз вроде еще что-то заменяет.
Как вариант можно использовать что-нибудь такое:
CODE:
function replace_symbols($s)
{
$s = str_replace('&', '&amp;', $s);
$s = str_replace('<', '&lt;', $s);
$s = str_replace('>', '&gt;', $s);
$s = str_replace("'", '&apos;', $s);
return str_replace('"', '&quot;', $s);
}


Емае, это в любой книжке по пхп есть... Почитал бы хоть. Огорчение
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 09:41
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




это-то понятно, я и сам знаю.

но непосредственно в коде как это реализвать. просто добавлением этой функции же не обойдешься. еще что-то прописать или дописать надо

пропиши если можешь сразу на моем примере.

непосредственно
в этиих полях

CODE:

echo "<description><![CDATA[".$news_news."]]></description>";
echo "".$news_full."


нужна замена
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 10:13
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Defenderyk,
Цитата:
это-то понятно, я и сам знаю.

эмм... Ха-ха

Если ты это знаешь, то как ты можешь не уметь вызввать функцию... Ха-ха

CODE:
echo "<description><![CDATA[".replace_symbols($news_news)."]]></description>";
echo "".replace_symbols($news_full)."
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 10:27
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




да вот что-то так просто не робит.
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 10:32
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Defenderyk пишет:
да вот что-то так просто не робит.

Да прям не робит? Ха-ха
http://mihalicyn.ru/test/replace.php (см. исходник страницы)
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 10:34
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




Тогда поступим так) Вот код страницы полный:

CODE:

.................
...............
...............
/////////////////
$result = dbquery("SELECT news_datestamp FROM ".DB_NEWS." ORDER BY news_datestamp DESC LIMIT 0,1");
$data = dbarray($result);
$build_date=$data['news_datestamp'];
$upldt = date("r",$build_date);// конвертация даты в формат RFC 2822

............
............
............



while ($data = dbarray($result))
{
/////
$news_news = $data['news_breaks'] == "y" ? nl2br(stripslashes($data['news_news'])) : stripslashes($data['news_news']);
$news_full = $data['news_extended'] == "y" ? nl2br(stripslashes($data['news_extended'])) : stripslashes($data['news_extended']);
/////
echo " <item>
";
echo "<title>".$data['news_subject']."</title>
";
echo "<link>".$settings['siteurl']."news.php?readmore=".$data['news_id']."</link>
";
echo "<description><![CDATA[".$news_news."]]></description>
";
echo "<author>".$data['user_name']."</author>
";
echo "<category>".$data['news_cat_name']."</category>
";
/////
$nd = $data['news_datestamp'];
$updt = date("r",$nd);
////
echo "<pubDate>".$updt."</pubDate>
";
echo "<yandex:full-text>".$news_full."</yandex:full-text>
";
echo "</item>
";
}

echo "</channel>
";
echo "</rss>";?>



пропиши куда надо. посмотрим что выйдет Подмигивание
Во всех переменных, что идут на вывод нужна функция автозамены Хорошо
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 10:53
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Defenderyk,
ну ты тогда отладь код сначало. Чтобы работало без замены хотябы. А потом:
CODE:
error_reporting(E_ALL);

в начале скрипта, вставляешь функцию, которую я написал, вызываешь как я показал в примере и вперед! Отлаживать... Растерялся
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 10:54
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




не, скрипт рабочий, но он работает только с CMS
\я из кода убрал все то что не нужно


ты мне поставь чтобы заменял
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 11:03
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Defenderyk пишет:
но он работает только с CMS

Я вижу. Выброси эту ЦМС... код просто пипец... Улыбка Одни только функции для работы с БД вместо класса чего стоят. Ха-ха ПХП фьюжн да? Ха-ха

Defenderyk пишет:
ты мне поставь чтобы заменял
,
эм я ведь показал пример:
CODE:
echo replace_symbols($переменная которая идет на вывод);
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 11:09
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




Александр Михалицын пишет:
Одни только функции для работы с БД вместо класса чего стоят

ну вопрос с классами решаем)

Александр Михалицын пишет:
эм я ведь показал пример:

я так делал, но что-то не заменилось
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 11:10
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Цитата:
я так делал, но что-то не заменилось

Я ведь сказал, выставляй еррор репотинг Е ОЛЛ и вперед. Улыбка
 
 
Defenderyk
Отправлено: 11 сентября 2009 — 11:12
Post Id


Пользователь
Super Member


Покинул форум
Сообщений всего: 1027
Дата рег-ции: Февр. 2009  
Репутация: 31




да не то, чтобы не работает после вставки. работает сам скрипт. а вот замена не робит

в приложенном мной коде поправь как ситаешь нужно. я проверю
 
 
yura3d
Отправлено: 11 сентября 2009 — 11:34
Post Id


Пользователь
ExBB Team
ExBB Developer
ExBB Mods Author


Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009  
Откуда: Минск, Беларусь
Репутация: 353




Defenderyk
Не нужно никаких дополнительных функций типа той, что приводил Александр Михалицын выше. Встроенная функция htmlspecialchars() выполняет как раз необходимые Вам действия при значении второго аргумента ENT_QUOTES. Что же касается того, как это применить. Строку:
CODE:
echo "<description><![CDATA[".$news_news."]]></description>";

замените строкой:
CODE:
echo "<description><![CDATA[".htmlspecialchars(stripslashes($news_news), ENT_QUOTES)."]]></description>";

А вообще я согласен с Александром Михалицыном в том, что код написан коряво, не рекомендовал бы пользоваться такой CMS. Во-первых данный код плохо масштабируем, отстутствие полноценного класса для работы с БД - прямая угроза SQL-инъекций
 
 
Александр Михалицын
Отправлено: 11 сентября 2009 — 11:46
Post Id


Администратор
Super Member


Покинул форум
Сообщений всего: 723
Дата рег-ции: Февр. 2009  
Репутация: 42




Цитата:
Не нужно никаких дополнительных функций типа той, что приводил Александр Михалицын выше. Встроенная функция htmlspecialchars() выполняет как раз необходимые Вам действия при значении второго аргумента ENT_QUOTES. Что же касается того, как это применить. Строку:

ГЫ, забавно, не знал об втором аргументе... Улыбка
 
 
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« PHP/Perl »

> Похожие темы: Замена символов в php
Темы Форум Информация о теме Обновление
Дополнение : счетчик символов в сообщении
Модификации и дополнения Ответов: 4
Автор темы: cjvakarian
10 августа 2016 — 18:07
Автор: cjvakarian
Замена внешних ссылок на внутренние средствами PHP
PHP/Perl Ответов: 5
Автор темы: Gori
13 июля 2015 — 08:41
Автор: Gori
Замена "-" и "+" репутации под аватарой!
Решение проблем Ответов: 4
Автор темы: Borman
3 декабря 2009 — 15:33
Автор: Александр Михалицын
Ограничение длины символов и ввода цифр при регистрации
Модификации и дополнения Ответов: 6
Автор темы: altjo
27 марта 2012 — 17:11
Автор: BON
Ограничение символов в столбце "Обновление"
.. на морде форума
Настройка форума Ответов: 6
Автор темы: Pauk
18 ноября 2010 — 22:24
Автор: Pauk
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0629]     [ ]