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



 

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

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

Открыть тему
Тема закрыта
> Проблемы с регулярным выражением
dan1
dan1
Topic Starter сообщение 8.3.2011, 0:51; Ответить: dan1
Сообщение #1


Здравствуйте друзья. С регулярными выражениями редко имею дело, но вот появилась такая задача:
В переменной $str имеются такие конструкции: {INFO-1}, {INFO-2}, {INFO-3} и т.д. необходимо вычленить номер из этих конструкций (1, 2, 3, и т.д.) и использовать этот номер в качестве номера ячейки массива $blocks.
Делаю это так:

$str = preg_replace("/{INFO-([0-9]{1,5})}/i", $blocks['\\1'] ,$str);

Но вариант не срабатывает, явно что-то надо заэкранировать во втором аргументе функции, вот только что, не подскажите?

Сообщение отредактировал dan1 - 8.3.2011, 0:52
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sngrl
sngrl
сообщение 8.3.2011, 1:04; Ответить: sngrl
Сообщение #2


Экранируй конечно-же фигурные скобки {}!! Но возможно не прокатит такой вариант, надо пробовать... Т.к. \\1 возможно не будет распространяться на $block...

Можешь попробовать сделать так.
Сначала делаешь preg_match_all со своей регуляркой, например так:

preg_match_all("~\{INFO-(\d*?)\}~is", $str, $data);


Можешь сразу глянуть, что нашлось:

print_r($data);


А потом в цикле производишь замену:

foreach($data[1] as $n => $val) {
  $str = str_replace("{INFO-".$val."}", $blocks[$val], $str);
}


Экспериментируй, и все получится))

Сообщение отредактировал sngrl - 8.3.2011, 1:05


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Aferist
Aferist
сообщение 8.3.2011, 1:17; Ответить: Aferist
Сообщение #3


попробуй так:
preg_match_all('|FO-([0-9]*).*|sUS', $str, $data);

$data - твой номер


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dan1
dan1
Topic Starter сообщение 8.3.2011, 7:55; Ответить: dan1
Сообщение #4


Спасибо Вам огромное — проблема решена.
sngrl предложил полностью готовое решение smile.gif
Всё хотелось выполнить в одно действие, поэтому и просидел долго, вариант с preg_match_all() отметал, но теперь думаю, что без него никуда.

Спасибо ещё раз: sngrl, и Aferist. Ваши варианты работают.

Тему можно закрывать.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Проблемы с версткой. Сайт поплыл.
1 igor1337 4258 3.9.2016, 19:41
автор: -Ruslaner___-
Открытая тема (нет новых ответов) Ищу работу, связанную с регулярным длительным нахождением online
Наполнение форумов (постинг), модерация (все популярные CMS)
22 home 11932 26.6.2016, 15:46
автор: home
Открытая тема (нет новых ответов) Проблемы с Kazapa
4 baracuda 3769 29.6.2015, 22:21
автор: baracuda
Открытая тема (нет новых ответов) У меня возникли две проблемы. Пожалуйста помогите.
6 DmitryPro 5117 21.6.2014, 20:47
автор: -Mr.Usluga-
Открытая тема (нет новых ответов) проблемы с сайтом
3 Modest_hb 4872 16.5.2013, 17:44
автор: -killerblade-


 



RSS Текстовая версия Сейчас: 25.4.2024, 4:10
Дизайн