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

Форум Регулярные Выражения

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

 

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

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

тема: При помощи BBCode извлечь данные из $_SESSION
 
 автор: ZetRider   (16.11.2011 в 14:44)   письмо автору
 
 

Добрый вечер, в одном из скриптов пользователю дается возможность вставить тег:
Текст текст [session]4[/session] текст текст

Данные записываются в mysql, при выводе нужно заменить
[session]4[/session] на выполнение этого кода:


<?php echo $_SESSION['mysession']['4']; ?>


Возмоно ли такое вообще реализовать? ведь это не HTML теги...
В каком направлении копать? str_replace ? preg_replace ?

Данные выводятся через запрос к БД цикл foreach

благодарю

  Ответить  
 
 автор: cheops   (16.11.2011 в 15:07)   письмо автору
 
   для: ZetRider   (16.11.2011 в 14:44)
 

Можно попробовать реализовать эту задачу при помощи preg_replace()
<?php
  $_SESSION
['mysession']['4'] = "Hello world!";
  
$text "Текст текст [session]4[/session] текст текст";
  
$pattern "|\[session\](\d+)\[/session\]|e";
  echo 
preg_replace($pattern"\$_SESSION['mysession']['\\1']"$text);
?>

  Ответить  
 
 автор: ZetRider   (16.11.2011 в 15:25)   письмо автору
 
   для: cheops   (16.11.2011 в 15:07)
 

Спасибо! все верно работает !

А если я в сессию передаю не число а к примеру буквенный индекс? с буквами не работает
какое должно быть рег выражение?

  Ответить  
 
 автор: ZetRider   (16.11.2011 в 15:52)   письмо автору
 
   для: cheops   (16.11.2011 в 15:07)
 

все понял...
$pattern = "|\[session\](.*)\[/session\]|e"; 

еще раз спасибо

  Ответить  
 
 автор: ZetRider   (24.11.2011 в 09:11)   письмо автору
 
   для: cheops   (16.11.2011 в 15:07)
 

cheops, подскажите правильно ли следующее регулярное выражение? :

<?php
$_SESSION
['mysession-3']['4'] = "Hello world!"
$text "Текст текст [session id='4']1[/session] текст текст"
echo 
preg_replace("|\[session id='(.*)'\](.*)\[/session\]|e""\$_SESSION['mysession-\\1']['\\2']"$text); 
?>


Выбор двух значений

  Ответить  
 
 автор: cheops   (24.11.2011 в 12:06)   письмо автору
 
   для: ZetRider   (24.11.2011 в 09:11)
 

Если у вас будет два или больше тэгов [session], это регулярное выражение выберет первый тэг [session] и последний [/session] поместив в первый (.*), все что между ними... лучше заменить (.*) на (.*?).

  Ответить  
 
 автор: tima2010   (24.11.2011 в 12:47)   письмо автору
 
   для: cheops   (24.11.2011 в 12:06)
 

интересно

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

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