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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Гостевая и теги в ней

Сообщения:  [1-6] 

 
 автор: Sonic   (30.07.2004 в 22:06)   письмо автору
 
   для: cheops   (30.07.2004 в 21:55)
 

Огромное спасибо :)

   
 
 автор: cheops   (30.07.2004 в 22:05)   письмо автору
 
   для: cheops   (30.07.2004 в 21:55)
 

Перед литерой b в квадратных тегах я поставил пробел, чтобы не происходила интерпретация тэга на этом форуме, перед использованием его нужно убрать - скрипт рассчитан на то, что тег состоит из одного символа, заключенного в квадратные скобки...

   
 
 автор: cheops   (30.07.2004 в 21:55)   письмо автору
 
   для: cheops   (30.07.2004 в 21:31)
 

Тогда поиск можно осуществлять примерно следующим образом:
<?php
  
// Исходная строка
  
$postbody "[ b]Это[ /b] очень жирный [ b]текст[ /b].";
  
// Результирующая строка
  
$result "";
  
// Вспомогательные переменные
  
$lastocc 0;
  
$sndocc 1;
  while(
$sndocc)
  {
    
// Начало жирного фрагмента
    
$fstocc strpos($postbody"[ b]"$lastocc);
    
// Завершение жирного фрагмента
    
$sndocc strpos($postbody"[ /b]"$fstocc);
    if((
$fstocc>&& $sndocc>&& $lastocc>0) || ($fstocc >= && $sndocc>&& $lastocc == 0))
    {
      
// Помещаем фрагмент до тега [ b] в строку $result
      
$result .= substr($postbody$lastocc$fstocc $lastocc);
      
// Жирный фрагмент
      
$result .= "<b>".substr($postbody$fstocc 3$sndocc $fstocc 3)."</b>";
      
$lastocc $sndocc 4;
    }
    else
    {
      
// Подбираем остатки строки
      
$result .= substr($postbody,$lastocc,strlen($postbody)-$lastocc);
      
// Выходим из цикла
      
break;
    }
  }
  echo 
$result;
?>

Если всё-таки захотите всё оставить на совести посетителя, то можно просто написать
<?php
    
// Исходная строка
    
$postbody "[ b]Это[ /b] очень жирный [ b]текст[ /b].";
    
$postbody str_replace("[ b]","<b>",$postbody);
    
$postbody str_replace("[ /b]","</b>",$postbody);
    echo 
$postbody;
?>

   
 
 автор: Sonic   (30.07.2004 в 21:36)   письмо автору
 
   для: cheops   (30.07.2004 в 21:31)
 

А можно функцию узнать поиска?

   
 
 автор: cheops   (30.07.2004 в 21:31)   письмо автору
 
   для: Sonic   (30.07.2004 в 20:26)
 

Лучше заменить теги на квадратные, и осуществлять последовательный поиск - находим начало [t] и переводим его только в том случае, если ему соответствует конец, [/t]. Если конца мы не находим, то и преобразование не осуществляется, в этом случае, вместо жирного текста посетители увидят тег [t] - это менее страшно...

   
 
 автор: Sonic   (30.07.2004 в 20:26)   письмо автору
 
 

Я бесконечно рад за вашу помощь, спасибо!

У меня есть такой вопрос, вот я написал гостевую, элементарнийшую, так вот проблема. Пока пусть будет без замен тегов <b> на

Гостевая работает так. Открываем файл, записываем в него с определёнными параметрами текст

$fp = fopen("mess.dat","a+");
fwrite($fp,"<b>Сегодня:</b> <font color='green'>$date</font><br>---------------<br><b>Ваше имя:</b> $name<br><b>Ваше мыло:</b> $email<br><b>Сообщение:</b> $mess<br><hr>");
fclose($fp);

, и потом его выводим.
Вопрос в том, что когда я в сообщении пишу тег <b> и не закрываю его. То всё потом жирное, то есть надо както проверять и закрывать все открытые тег в пределах сообщения...

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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