Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2012, 00:28   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Вопрос PHP - регулярные выражения.

Здравствуйте, помогите разобраться до конца с регулярными выражениями.
Вопрос вот в чем.

PHP код:
preg_match_all('/{.+}/'$this->tpl$key); 
По сути тут я пишу в массив все что нахожу в фигурных скобках вместе со скобками. А что нужно добавить в маску чтобы в массив писало без фигурных скобок???

Заранее очень благодарен
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 20.10.2012, 02:10   #2
LZero
Форумчанин
 
Регистрация: 20.07.2012
Сообщений: 129
По умолчанию

preg_match_all('/{(.+)}/', $this->tpl, $key); ?
LZero вне форума Ответить с цитированием
Старый 20.10.2012, 03:39   #3
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от LZero Посмотреть сообщение
preg_match_all('/{(.+)}/', $this->tpl, $key); ?
Нет не совсем то.
Покажу наглядней, с моей маской '/{.+}/' я получаю в результате {id}, а мне нужно получать id без фигурных скобок.
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 20.10.2012, 10:12   #4
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию

Попробуйте так:

PHP код:
preg_match_all('|{(.+?)}|'$this->tpl$key); 
ShnapS вне форума Ответить с цитированием
Старый 20.10.2012, 14:57   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Я не понимаю, как у вас там вообще хоть что-то работает. Вы в курсе, что фигурные скобки - это спец. символ и их экранировать надо?
Код:
preg_match_all('/\{(.*)\}/', $this->tpl, $key);
Cronos20 вне форума Ответить с цитированием
Старый 21.10.2012, 04:51   #6
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Печаль

Цитата:
Сообщение от ShnapS Посмотреть сообщение
Попробуйте так:

PHP код:
preg_match_all('|{(.+?)}|'$this->tpl$key); 
И такой метод тоже захватывает их
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 21.10.2012, 13:18   #7
LZero
Форумчанин
 
Регистрация: 20.07.2012
Сообщений: 129
По умолчанию

В любом случае скобки будут захватываться потому, что они есть в шаблоне. Напишите print_r($key) и все увидите.
LZero вне форума Ответить с цитированием
Старый 21.10.2012, 18:47   #8
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Радость

Цитата:
Сообщение от LZero Посмотреть сообщение
В любом случае скобки будут захватываться потому, что они есть в шаблоне. Напишите print_r($key) и все увидите.
Нет это я знаю, но я думал их как-то можно отсечь - чтобы самому не перебирать массив.
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.10.2012, 03:03   #9
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Восклицание

Еще заметил не хорошие явления в регулярных выражениях.
К примеру, есть строка:
Код HTML:
<img id="photo_{tpl:id}" src="{tpl:image}" style="width: 135px; height: 90px;" onclick="OnClickElems(this)" />
В этой строке, как бы 2 параметра которые нам нужно найти.

И есть такой метод:
PHP код:
preg_match_all('/\{tpl:.+\}/'$this->tpl$key); 
В результате получаем
PHP код:
$key[0][0] = "{tpl:id}" src="{tpl:image}" 
.
Хотя была надежда на:
PHP код:
$key[0][0] = "{tpl:id}"
$key[0][1] = "{tpl:image}" 
Может кто что подскажет, может я в чем-то не прав
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 22.10.2012, 12:22   #10
LZero
Форумчанин
 
Регистрация: 20.07.2012
Сообщений: 129
По умолчанию

Жадность
ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8 F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1 %8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D 0%B8%D1%8F#.D0.96.D0.B0.D0.B4.D0.BD .D0.B0.D1.8F_.D0.B8_.D0.BB.D0.B5.D0 .BD.D0.B8.D0.B2.D0.B0.D1.8F_.D0.BA. D0.B2.D0.B0.D0.BD.D1.82.D0.B8.D1.84 .D0.B8.D0.BA.D0.B0.D1.86.D0.B8.D1.8 F
Пробуйте так:
Код:
/\{tpl:.+?\}/
или
Код:
/\{tpl:([^\}]+)\}/

Последний раз редактировалось LZero; 22.10.2012 в 12:29.
LZero вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения PHP & JS Abuhamed JavaScript, Ajax 3 21.05.2011 16:17
Регулярные выражения (PHP) Darlee PHP 2 06.03.2011 16:00
Регулярные выражения в PHP ZET78 PHP 1 31.10.2010 20:51
Регулярные выражения PHP russian-stalker PHP 8 11.04.2010 17:46
Регулярные выражения. (PHP) slavec PHP 1 10.03.2010 20:59