ExBB Community » » PHP/Perl » Замена символов в php

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

1. Defenderyk - 11 сентября 2009 — 08:41 - перейти к сообщению
есть код
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;


если не трудно, то сразу на этом примере, так мне будет потом понятнее
2. Александр Михалицын - 11 сентября 2009 — 09:20 - перейти к сообщению
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);
}


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

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

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

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

CODE:

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


нужна замена
4. Александр Михалицын - 11 сентября 2009 — 10:13 - перейти к сообщению
Defenderyk,
Цитата:
это-то понятно, я и сам знаю.

эмм... Ха-ха

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

CODE:
echo "<description><![CDATA[".replace_symbols($news_news)."]]></description>";
echo "".replace_symbols($news_full)."
5. Defenderyk - 11 сентября 2009 — 10:27 - перейти к сообщению
да вот что-то так просто не робит.
6. Александр Михалицын - 11 сентября 2009 — 10:32 - перейти к сообщению
Defenderyk пишет:
да вот что-то так просто не робит.

Да прям не робит? Ха-ха
http://mihalicyn.ru/test/replace.php (см. исходник страницы)
7. Defenderyk - 11 сентября 2009 — 10:34 - перейти к сообщению
Тогда поступим так) Вот код страницы полный:

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>";?>



пропиши куда надо. посмотрим что выйдет Подмигивание
Во всех переменных, что идут на вывод нужна функция автозамены Хорошо
8. Александр Михалицын - 11 сентября 2009 — 10:53 - перейти к сообщению
Defenderyk,
ну ты тогда отладь код сначало. Чтобы работало без замены хотябы. А потом:
CODE:
error_reporting(E_ALL);

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


ты мне поставь чтобы заменял
10. Александр Михалицын - 11 сентября 2009 — 11:03 - перейти к сообщению
Defenderyk пишет:
но он работает только с CMS

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

Defenderyk пишет:
ты мне поставь чтобы заменял
,
эм я ведь показал пример:
CODE:
echo replace_symbols($переменная которая идет на вывод);
11. Defenderyk - 11 сентября 2009 — 11:09 - перейти к сообщению
Александр Михалицын пишет:
Одни только функции для работы с БД вместо класса чего стоят

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

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

я так делал, но что-то не заменилось
12. Александр Михалицын - 11 сентября 2009 — 11:10 - перейти к сообщению
Цитата:
я так делал, но что-то не заменилось

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

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

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

А вообще я согласен с Александром Михалицыном в том, что код написан коряво, не рекомендовал бы пользоваться такой CMS. Во-первых данный код плохо масштабируем, отстутствие полноценного класса для работы с БД - прямая угроза SQL-инъекций
15. Александр Михалицын - 11 сентября 2009 — 11:46 - перейти к сообщению
Цитата:
Не нужно никаких дополнительных функций типа той, что приводил Александр Михалицын выше. Встроенная функция htmlspecialchars() выполняет как раз необходимые Вам действия при значении второго аргумента ENT_QUOTES. Что же касается того, как это применить. Строку:

ГЫ, забавно, не знал об втором аргументе... Улыбка

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

Powered by ExBB
[Script Execution time: 0.0465]     [ ]