Помощник
|
Парсинг строки: Как использовать вместо строки-шаблона функцию, Помогите с решение задачи |
Дилетант_mw
|
Сообщение
#1
|
||
|
|
||
|
|||
НЕПЛОХОЙ |
12.7.2010, 20:31;
Ответить: НЕПЛОХОЙ
Сообщение
#2
|
|
[php]$str = '[date]1.jpg[/date]';
$text = preg_replace("#\[date\](.+)\[\/date\]#i", "\\1", $str); echo date("D, d M Y H:i:s T", filemtime($text));[/php] в следующий раз создавай отдельную тему |
|
|
Дилетант_mw
|
Сообщение
#3
|
|
Спасибо огромное. Буду пробовать.
Так я бы с удовольствием новую тему создал, но форум говорит, что нет прав для создания новой темы. "Школьник" я еще. Нет 10 сообщений. А где тогда вопрос задавать? Вот и выбрал более-менее подходящую тему. |
|
|
Дилетант_mw
|
Сообщение
#4
|
|
А по аналогии с конструкцией
[email=null@mail.ru]null@mail.ru[/email] которая обрабатывается одной строкой [php]$text = preg_replace("/\[email\](\S+?\@\S+?)\[\/email\]/is","<a href=\"mailto:$1\">$1</a>",$text);[/php] как сделать для конструкции [date]1.jpg[/date] Что-то у меня не получилось предыдущий код в одну строку составить. |
|
|
ZiTosS |
13.7.2010, 16:16;
Ответить: ZiTosS
Сообщение
#5
|
|
Дилетант, вот наберете 10 сообщений и создадите тему, а данную тему я выделю в отдельное производство :)
В одну строку у вас сделать не получится, так как вторым параметром функции preg_replace является строка шаблона-замены. Вы не можете использовать вместо строки вызов функции. Вы можете использовать другую функцию: preg_replace_callback() В ней исполняется код функции обратного вызова. Вы можете вместо функции обратного вызова создать функцию на лету с помощью: create_function() P.s.: Что-то я не пойму, а чем вам не нравится код в 3 строчки? Или вы считаете, что длинная непонятная строка это хороший тон? |
|
|
Дилетант_mw
|
Сообщение
#6
|
|
ZiTosS, код из 3-х строчек мне нравится. И претензий к нему нет. Дело в том, что мне это хозяйство нужно впихнуть в код "движка", который у меня уже работает. Если бы писалось что-то новое, проблем нет.
ZiTosS, как одной строкой все это дело оформить? Можно ли? Напиши, пожалуйста? |
|
|
yury_mw |
14.7.2010, 12:08;
Ответить: yury_mw
Сообщение
#7
|
|
Дилетант, У вас эта конструкция работает? Странно.
Она годится для [email]null@mail.ru[/email] но никак не для [email=null@mail.ru]null@mail.ru[/email] Относительно того, что вам сильно хочется весь код (про дату файла) загнать в одну строку: [php]$text = date("d/m/Y", filemtime(preg_replace("/\[date\](\S+?)\[\/date\]/is", "$1", $text)));[/php] |
|
|
Дилетант_mw
|
Сообщение
#8
|
|
yury, конечно же конструкция
[email]null@mail.ru[/email] я неверно указал.Дело в том, что у меня в движке обработчик boardcode(&$text,$html=0,$tid,$pid) просматривает $text поста и меняет там бордкоды. пример: [php]$text = preg_replace("/\[font=([\w ]+?)\]/is","<font face=\"$1\">",$text); $text = preg_replace("/\[color=([#\w\d]+?)\]/is","<font color=\"$1\">",$text); $text = preg_replace("/\[size=(\d+?)\]/is","<font size=\"$1\">",$text); $text = preg_replace("/\[off\](.*?)\[\/off\]/is","<div class=\"offtopic\">".MSG_offtopic.": $1</div>",$text); и т.д.[/php] Поэтому не знаю как это сделать одной строкой для бордкода DATE. |
|
|
yury_mw |
14.7.2010, 12:42;
Ответить: yury_mw
Сообщение
#9
|
|
... Поэтому не знаю как это сделать одной строкой. Дилетант, я ж вам вроде дал готовый однострочный код: [php]$text = date("d/m/Y", filemtime(preg_replace("/\[date\](\S+?)\[\/date\]/is", "$1", $text)));[/php] который будет выдавать дату файла, закодированную конструкцией типа [date]http://mysite.ru/dir/images/img.gif[/date] Или я не понял и вы что-то другое не знаете? |
|
|
Дилетант_mw
|
Сообщение
#10
|
|
Вставил код
[php]$text = date("d/m/Y", filemtime(preg_replace("/\[date\](\S+?)\[\/date\]/is", "$1", $text)));[/php] в код движка форума функцию boardcode(&$text,$html=0,$tid,$pid) последней строкой. вместо текста сообщения поста выдается дата - 01/01/1970. Весь $text, который был уже модифицирован заменен на дату 01/01/1970 |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Как вы отдыхаете от работы за компом | 151 | adw-kupon.ru | 19809 | Сегодня, 13:52 автор: Vmir |
|
Как вы бросили работу и перешли на заработок с сайтов? | 20 | uahomka | 3441 | Сегодня, 11:54 автор: Skyworker |
|
Как в пушсетках покупают по 100-200 тысяч кликов за день? | 1 | Boymaster | 509 | Сегодня, 11:45 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 30 | freeax | 5005 | 20.4.2024, 16:49 автор: Liudmila |
|
Арбитражники, как ведете учет расходов и доходов? | 13 | Boymaster | 2017 | 20.4.2024, 15:06 автор: Boymaster |
Текстовая версия | Сейчас: 23.4.2024, 19:01 |