Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: регулярка для preg_match_all

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Описание: регулярка
tyshka
Отправлено: 22 Февраля, 2015 - 17:46:13
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




помогите пожалуйста разобрать строку с помощью регулярки и preg_match_all

[item title="заголовок" image="ссылка"]содержимое[/item]

нужно получить раздельно содержимое из title="" , image="" и то что между квадратными скобками [item]содержимое[/item]

т.е. нужно получить из этой строки

1 - заголовок
2 - ссылка
3 - содержимое

спасибо заранее
 
 Top
Ts.Saltan
Отправлено: 22 Февраля, 2015 - 17:51:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. $data = '[item title="заголовок" image="ссылка"]содержимое[/item]';
  2. preg_match_all('#\[item title="([^"]+)" image="([^"]+)"\]([^\[]*)\[/item\]#Ui',$data, $res);
  3. var_dump($res);
 
 Top
tyshka
Отправлено: 22 Февраля, 2015 - 18:18:16
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
PHP:
скопировать код в буфер обмена
  1. $data = '[item title="заголовок" image="ссылка"]содержимое[/item]';
  2. preg_match_all('#\[item title="([^"]+)" image="([^"]+)"\]([^\[]*)\[/item\]#Ui',$data, $res);
  3. var_dump($res);


результат:

array(4) {
[0]=>
array(0) {
}
[1]=>
array(0) {
}
[2]=>
array(0) {
}
[3]=>
array(0) {
}
}
 
 Top
Ts.Saltan
Отправлено: 22 Февраля, 2015 - 18:26:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




Только что перепроверил
не поленился, запустил сервер Радость

работает как часы

CODE (htmlphp):
скопировать код в буфер обмена
  1. array(4) {
  2.   [0]=>
  3.   array(1) {
  4.     [0]=>
  5.     string(81) "[item title="заголовок" image="ссылка"]содержимое[/item]"
  6.   }
  7.   [1]=>
  8.   array(1) {
  9.     [0]=>
  10.     string(18) "заголовок"
  11.   }
  12.   [2]=>
  13.   array(1) {
  14.     [0]=>
  15.     string(12) "ссылка"
  16.   }
  17.   [3]=>
  18.   array(1) {
  19.     [0]=>
  20.     string(20) "содержимое"
  21.   }
  22. }
 
 Top
tyshka
Отправлено: 22 Февраля, 2015 - 18:58:32
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
Только что перепроверил
не поленился, запустил сервер Радость

работает как часы


да работает если использовать только в точности этот вариант - т.е.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. $data = '[item title="заголовок" image="ссылка"]содержимое[/item]';
  4. preg_match_all('#\[item title="([^"]+)" image="([^"]+)"\]([^\[]*)\[/item\]#Ui',$data, $res);
  5. var_dump($res);
  6.  
  7.  


если встраивать чтобы данные для регулярки брались из реально используемых данных - не работает, хотя данные то берутся правильные

данные которые берутся

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. print_r( $content );
  4.  
  5. [item title=”заголовок1” image=”ссылка1]содержимое1[/item]
  6. [item title=”заголовок2” image=”ссылка2]содержимое2[/item]
  7. [item title=”заголовок3” image=”ссылка3]содержимое3[/item]
  8. [item title=”заголовок4” image=”ссылка4]содержимое4[/item]
  9. [item title=”заголовок5” image=”ссылка5]содержимое5[/item]
  10.  
  11.  


само выражение

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. preg_match_all( '#\[item title="([^"]+)" image="([^"]+)"\]([^\[]*)\[/item\]#Ui', $content, $matches );
  4.  
  5.  


результат

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. print_r( $matches );
  4.  
  5. (
  6.     [0] => Array
  7.         (
  8.         )
  9.  
  10.     [1] => Array
  11.         (
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.         )
  17.  
  18.     [3] => Array
  19.         (
  20.         )
  21.  
  22. )
  23.  
  24.  

(Отредактировано автором: 22 Февраля, 2015 - 19:43:13)

 
 Top
Ts.Saltan
Отправлено: 22 Февраля, 2015 - 20:08:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




кавычки
они такие " (под них регулярка)
или такие ” (это уже совсем другой символ)
?

(Отредактировано автором: 22 Февраля, 2015 - 20:08:27)

 
 Top
tyshka
Отправлено: 22 Февраля, 2015 - 20:11:39
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
кавычки
они такие " (под них регулярка)
или такие ” (это уже совсем другой символ)
?


вообще кавычки такие "

но при print_r( $content );

получается что кавычки ”
 
 Top
Ts.Saltan
Отправлено: 22 Февраля, 2015 - 20:21:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




напишите примерный блок данных, который нужно распарсить
var_export($content)
 
 Top
tyshka
Отправлено: 22 Февраля, 2015 - 20:28:11
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
var_export($content)


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4.                         '
  5. [item link=”link1” image=”ссылка1”]содержимое1[/item]
  6. [item link=”link2” image=”ссылка2”]содержимое2[/item]
  7. [item link=”link3” image=”ссылка3”]содержимое3[/item]
  8. [item link=”link4” image=”ссылка4”]содержимое4[/item]
  9. [item link=”link5” image=”ссылка5”]содержимое5[/item]
  10. '
  11.  
  12.  
 
 Top
Ts.Saltan
Отправлено: 22 Февраля, 2015 - 20:38:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




так нужен
[item title=...
или
[item link=...
?

(Отредактировано автором: 22 Февраля, 2015 - 20:38:50)

 
 Top
tyshka
Отправлено: 22 Февраля, 2015 - 20:45:59
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




да без разницы, это же не имеет существенного значения главное если я буду применять "title" значит там должен присутствовать этот параметр [item title=...
если буду применять link значит [item link=...
 
 Top
tyshka
Отправлено: 23 Февраля, 2015 - 04:31:38
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




так как заменить кавычки? или может кавычки вообще искоючить из регулярки чтобы не было танцев если кавычки будут другими отличными от условий проверки

(Отредактировано автором: 23 Февраля, 2015 - 18:19:10)

 
 Top
Ts.Saltan
Отправлено: 24 Февраля, 2015 - 17:02:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




tyshka пишет:
да без разницы, это же не имеет существенного значения

Для регулярки имеет значение, напишите какие могут быть ключи кроме link, title и т.д.
Та регулярка, что я написал для item title...

А вообще, структура похожа на xml, я бы поменял скобки [] на <> и парсил как xml встроенными функциями (simpleXML)
 
 Top
tyshka
Отправлено: 24 Февраля, 2015 - 17:18:09
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
tyshka пишет:
да без разницы, это же не имеет существенного значения

Для регулярки имеет значение, напишите какие могут быть ключи кроме link, title и т.д.
Та регулярка, что я написал для item title...

А вообще, структура похожа на xml, я бы поменял скобки [] на <> и парсил как xml встроенными функциями (simpleXML)


структура похожа на bbcode, а вообще это под wordpress шорткод, поэтому [] скобки не имеет смысла менять, они будут изначально и перегонять их из квадратных в <> не имеет смысла

давайте под начальный вариант решим Улыбка

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. [item title="заголовок" image="ссылка"]содержимое[/item]
  3.  


вот главный вопрос остается - может вообще убрать использование кавычек? чтобы небыло зависимости от типа кавычек
 
 Top
Ts.Saltan
Отправлено: 24 Февраля, 2015 - 17:31:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




tyshka пишет:
вот главный вопрос остается - может вообще убрать использование кавычек?
не в кавычках дело, а в именовании параметров

Регулярка
Цитата:
'#\[item title="([^"]+)" image="([^"]+)"\]([^\[]*)\[/item\]#Ui'


Подойдёт для
tyshka пишет:
[item title="заголовок" image="ссылка"]содержимое[/item]


Но не для
tyshka пишет:
[item link=”link1” image=”ссылка1”]содержимое1[/item]
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB