X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Парсинг строки: Как использовать вместо строки-шаблона функцию, Помогите с решение задачи
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 12.7.2010, 18:45; Ответить: Дилетант_mw
Сообщение #1


Уважаемые, нужна помощь.
Есть такая конструкция:

[date]http://mysite.ru/dir/images/img.gif[/date]

нужно, чтобы вместо этой конструкции выводилась дата файла в виде 01/10/2010

Я вот пытался что-то сам кумекать,

$text = preg_replace("/\[date\](\S+?\\S+?)\[\/date\]/is",'.date("D, d M Y H:i:s T", filemtime("$1")).',$text);


не получается. Выводит текстовую строку.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 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]

в следующий раз создавай отдельную тему


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 13.7.2010, 8:26; Ответить: Дилетант_mw
Сообщение #3


Спасибо огромное. Буду пробовать.

Так я бы с удовольствием новую тему создал, но форум говорит, что нет прав для создания новой темы.

"Школьник" я еще. Нет 10 сообщений. А где тогда вопрос задавать? Вот и выбрал более-менее подходящую тему.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 13.7.2010, 12:51; Ответить: Дилетант_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
ZiTosS
сообщение 13.7.2010, 16:16; Ответить: ZiTosS
Сообщение #5


Дилетант, вот наберете 10 сообщений и создадите тему, а данную тему я выделю в отдельное производство :)

В одну строку у вас сделать не получится, так как вторым параметром функции preg_replace является строка шаблона-замены. Вы не можете использовать вместо строки вызов функции.
Вы можете использовать другую функцию: preg_replace_callback()
В ней исполняется код функции обратного вызова. Вы можете вместо функции обратного вызова создать функцию на лету с помощью: create_function()

P.s.: Что-то я не пойму, а чем вам не нравится код в 3 строчки? Или вы считаете, что длинная непонятная строка это хороший тон?


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 13.7.2010, 19:33; Ответить: Дилетант_mw
Сообщение #6


ZiTosS, код из 3-х строчек мне нравится. И претензий к нему нет. Дело в том, что мне это хозяйство нужно впихнуть в код "движка", который у меня уже работает. Если бы писалось что-то новое, проблем нет.
ZiTosS, как одной строкой все это дело оформить? Можно ли? Напиши, пожалуйста?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
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
Дилетант_mw
Topic Starter сообщение 14.7.2010, 12:32; Ответить: Дилетант_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. :angry:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 14.7.2010, 12:42; Ответить: yury_mw
Сообщение #9


(Дилетант @ 14.7.2010, 12:32) *
...
Поэтому не знаю как это сделать одной строкой. :angry:

Дилетант,
я ж вам вроде дал готовый однострочный код:
[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
Дилетант_mw
Topic Starter сообщение 14.7.2010, 12:51; Ответить: Дилетант_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
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
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


 



RSS Текстовая версия Сейчас: 23.4.2024, 19:01
Дизайн