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

Форум PHP

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

 

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

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

тема: строковые функции
 
 автор: mirage   (14.12.2006 в 13:11)   письмо автору
 
 

доброго дня всем !
я тут прочитал в вашей книге http://www.softtime.ru/bookphp/
раздел строковые функции и пример гостевой книги.

у меня возник вопорос.
например есть у нас такой текст:

Всем <b>привет</b>

если мы выводим этот текст с помошью функции htmlspecialchars()
то этот текст выводиться вместе с тегами а нужно чтобы слово привет было жирным
как быть ?

   
 
 автор: Fli   (14.12.2006 в 14:19)   письмо автору
 
   для: mirage   (14.12.2006 в 13:11)
 

str_replace();

:-)

   
 
 автор: Mirage   (14.12.2006 в 14:22)   письмо автору
 
   для: Fli   (14.12.2006 в 14:19)
 

по подробнее можно
чет я непонял что нужно заменять ?

наверное ты не понял меня.
короче есть форма для добавления сообщения, на подобие как у softtime
после отправки я преобразую специальные символы в тексте в html теги
пример:

   $msg = str_replace("[u]","<u>",$msg);
    $msg = str_replace("[U]","<u>",$msg);
    $msg = str_replace("","<i>",$msg);
    $msg = str_replace("[I]","<i>",$msg);
    $msg = str_replace("","<B>",$msg);
    $msg = str_replace("[B]","<B>",$msg);
    $msg = str_replace("","<SUB>",$msg);
    $msg = str_replace("[SUB]","<SUB>",$msg);
    $msg = str_replace("","<SUP>",$msg);
    $msg = str_replace("[SUP]","<SUP>",$msg);
    $msg = str_replace("[/u]","</u>",$msg);
    $msg = str_replace("[/U]","</u>",$msg);
    $msg = str_replace("
","</i>",$msg);
    $msg = str_replace("[/I]","</i>",$msg);
    $msg = str_replace("
","</B>",$msg);
    $msg = str_replace("[/B]","</B>",$msg);
    $msg = str_replace("","</SUB>",$msg);
    $msg = str_replace("[/sub]","</SUB>",$msg);
    $msg = str_replace("","</SUP>",$msg);
    $msg = str_replace("[/sup]","</SUP>",$msg);
    $msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a
                       href=\\2>\\2</a>\\3",$msg);


после этого данный текст записыиваю в БД

если мне надо его обратно вывести
то все нормально отображаестья со всеми выделениями, но сточки зрения безопасности данный вариант не подходит(вдруг сообщения содержит Java скрипты).
если же я использую функцию htmlspecialchars() то он выводит все подряд со всеми тегами

как же быть в такой ситуации ?

   
 
 автор: Alph[p]a   (14.12.2006 в 14:37)   письмо автору
 
   для: Mirage   (14.12.2006 в 14:22)
 

Так чтоль
<?php
$text="Всем <b>привет</b>";
$text=htmlspecialchars($text);
$text=str_replace("&lt;b&gt;","<b>","$text");
$text=str_replace("&lt;/b&gt;","</b>","$text");
echo $text;

?>

   
 
 автор: kasmanaft   (14.12.2006 в 14:42)   письмо автору
 
   для: Mirage   (14.12.2006 в 14:22)
 

А лучше, наверное, в БД записывать текст с BB тегами ...
А при выводе, уже после htmlspecialchars, заменять ББ теги нормальными ...

   
 
 автор: cheops   (14.12.2006 в 14:36)   письмо автору
 
   для: mirage   (14.12.2006 в 13:11)
 

Можно поступить следующим образом
<?php 
  $text 
"Всем <b>привет</b>";
  
$text htmlspecialchars($text);
  
$text str_replace("&lt;b&gt;""<b>"$text);
  
$text str_replace("&lt;/b&gt;""</b>"$text);
  echo 
$text;
?>

   
 
 автор: Mirage   (14.12.2006 в 14:52)   письмо автору
 
   для: cheops   (14.12.2006 в 14:36)
 

спасибо все получилось как я сам не додумался.....

   
Rambler's Top100
вверх

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