Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбрать все {{var name}}, preg_match_all, регулярка 
V
    Опции темы
bel_nikita
  Дата 14.11.2010, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Есть такой вот файл:
Код

    <PRODUCT>{{var name}}</PRODUCT>
    <DESCRIPTION>{{var description}}</DESCRIPTION>
    <URL>{{var url}}</URL>
    <IMGURL>{{var image}}</IMGURL>
    <PRICE>{{var price}}</PRICE>


Нужно достать все var'ы, потом заменить... с заменой вроде как понятно, а вот с регуляркой застрял.

Пытаюсь так:
Код
preg_match_all('{{var((?:.)*?)/us', $text, $matches) 


Но это нифига не правильно :-(


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 14.11.2010, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Вот так работает
Код

$text = '<PRODUCT>{{var name}}</PRODUCT>
    <DESCRIPTION>{{var description}}</DESCRIPTION>
    <URL>{{var url}}</URL>
    <IMGURL>{{var image}}</IMGURL>
    <PRICE>{{var price}}</PRICE>' ;
    
preg_match_all('|{{var (.+)}}|', $text, $matches) ;

print_r($matches);    

PM MAIL   Вверх
bel_nikita
Дата 14.11.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Eще вопрос:
Код

$text = '
{{block type="product"}}
<PRODUCT>{{var name}}</PRODUCT>
<DESCRIPTION>{{var description}}</DESCRIPTION>
<URL>{{var url}}</URL>
<IMGURL>{{var image}}</IMGURL>
<PRICE>{{var price}}</PRICE>
{{/block}}
';
    
preg_match_all('|{{var (.+)}}|', $text, $matches) ;
print_r($matches[1]);
    
preg_match('|{{block type=(.*?)}}(.*?){{/block}}|is',  $text, $outs);
print_r($outs);

Нужно "выдернуть" блок, т.е. <PRODUCT>{{var name}}</PRODUCT> ... <PRICE>{{var price}}</PRICE>


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 14.11.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Можно так сделать, за одно объеденив "достижения" прошлой регулярки
Код

preg_match_all('|<(.+)>({{var (.+)}})</.+>|U', $text, $outs) ;

PM MAIL   Вверх
bel_nikita
Дата 14.11.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Нужно получить из блока фрагмент:
Код

<PRODUCT>{{var name}}</PRODUCT>
<DESCRIPTION>{{var description}}</DESCRIPTION>
<URL>{{var url}}</URL>
<IMGURL>{{var image}}</IMGURL>
<PRICE>{{var price}}</PRICE>

Потом сделаю replace всех {{var ...}} и будет готовый xml.

Код
$text = '
{{block type="product"}}
<PRODUCT>{{var name}}</PRODUCT>
<DESCRIPTION>{{var description}}</DESCRIPTION>
<URL>{{var url}}</URL>
<IMGURL>{{var image}}</IMGURL>
<PRICE>{{var price}}</PRICE>
{{/block}}
';
preg_match('#\{\{block\s+type="?(.*?)"?\s*\}\}\s*(.*?)\s*\{\{/block\}\}#is',  $text, $outs);
//preg_match_all('|<(.+)>({{var (.+)}})</.+>|U', $text, $outs) ;
echo '<PRE>';
print_r($outs);
echo '</PRE>';
Получаю все {{var ...}}, но нужно <PRODUCT>{{var name}}</PRODUCT> <DESCRIPTION>{{var description}}</DESCRIPTION> ...


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
NLspieler
Дата 14.11.2010, 16:10 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(bel_nikita @  14.11.2010,  15:21 Найти цитируемый пост)
Получаю все {{var ...}}, но нужно <PRODUCT>{{var name}}</PRODUCT> <DESCRIPTION>{{var description}}</DESCRIPTION> ... 


Нет, ты получаешь именно <PRODUCT>{{var name}}</PRODUCT> <DESCRIPTION>{{var description}}</DESCRIPTION> ...,
просто браузер их воспринимает как теги, и поэтому не отображает. Смотри в браузере "исходный код"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0686 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.