|
|
|
| Добрый вечер, в одном из скриптов пользователю дается возможность вставить тег:
Текст текст [session]4[/session] текст текст
Данные записываются в mysql, при выводе нужно заменить
[session]4[/session] на выполнение этого кода:
<?php echo $_SESSION['mysession']['4']; ?>
|
Возмоно ли такое вообще реализовать? ведь это не HTML теги...
В каком направлении копать? str_replace ? preg_replace ?
Данные выводятся через запрос к БД цикл foreach
благодарю | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.11.2011 в 15:07)
| | Спасибо! все верно работает !
А если я в сессию передаю не число а к примеру буквенный индекс? с буквами не работает
какое должно быть рег выражение? | |
|
|
|
|
|
|
|
для: cheops
(16.11.2011 в 15:07)
| | все понял...
$pattern = "|\[session\](.*)\[/session\]|e";
|
еще раз спасибо | |
|
|
|
|
|
|
|
для: 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);
?>
|
Выбор двух значений | |
|
|
|
|
|
|
|
для: ZetRider
(24.11.2011 в 09:11)
| | Если у вас будет два или больше тэгов [session], это регулярное выражение выберет первый тэг [session] и последний [/session] поместив в первый (.*), все что между ними... лучше заменить (.*) на (.*?). | |
|
|
|
|
|
|
|
для: cheops
(24.11.2011 в 12:06)
| | интересно | |
|
|
|