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 :: простенькое регулярное выражение

 PHP.SU

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


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

> Без описания
kaleb
Отправлено: 08 Августа, 2010 - 12:45:52
Post Id


Новичок


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


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




у меня есть строка "enum('west','pet','4eture','tri','dva','anun')", мне нужно вытащить значения которые находятся между одинарных кавычек.
мой код:

$string = "enum('west','pet','4eture','tri','dva','adun')";
preg_match_all("/\'.*\'/", $string, $temp);

при выводе $temp я получаю:

Array
(
[0] => Array
(
[0] => 'west','pet','4eture','tri','dva','adun'
)
)

в чем я неправ подскажите пожалуйста)
 
 Top
SDR
Отправлено: 08 Августа, 2010 - 13:37:45
Post Id


Гость


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


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




CODE (text):
скопировать код в буфер обмена
  1.  
  2. preg_match_all("/\'([^']+)\'/", $string, $temp);
  3.  

(Отредактировано автором: 08 Августа, 2010 - 13:40:04)

 
 Top
kaleb
Отправлено: 08 Августа, 2010 - 14:02:13
Post Id


Новичок


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


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




большое спасибо!! а не могли бы вы обяснить в чом мой косяк? ато я никак не могу понять...
 
 Top
Champion Супермодератор
Отправлено: 08 Августа, 2010 - 14:10:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Жадность. Регулярка схватила строку до самой дальней кавычки.
 
 Top
kaleb
Отправлено: 08 Августа, 2010 - 14:29:24
Post Id


Новичок


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


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




)))))))) ну жадность дело плохое но, думаю, дело тут всетаки не в ней)))) ещё чуточку пораскинув мозгами, понял что дело всетаки в том что все внутренние скобки подпадали под шаблон .*... ну и само собой скобки, так как мне надо было только те значения что в кавычках, без них самих. Хорошо
Ещё раз Спасибо!
 
 Top
JustUserR
Отправлено: 09 Августа, 2010 - 01:37:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




kaleb пишет:
Ну жадность дело плохое но, думаю, дело тут всетаки не в ней
В приведенном вами шаблоне регулярного выражения и строке в котором оно производит поиск - причиной неправильной работы являлась именно жадность квантификатора Дело в том что жадные квантификаторы работают по следующему принципу - они осуществляют поиск определенного символа или группы символов и используют максимально-возможное число вхождений - в частности выражение .* вообще соответствует всей строке целиком с момента его вхождения в том случае если установнлен модификатор определяющей соответствие спецсимвола точки разрыву строки - иначе будет осуществляться поиск до первого символа новой строки - при этом нажадные квантификаторы поступают диаметрально противоположно - и в частности выражения .*? вообще стремится не соответстовать ни одному вхождению
Тем не менее любой квантификатор хоть и стремиться достичь максимально/минимально-возможног о числа вхождений искомого элемена в зависимости от его жадности - то в то же время достичь совпадения всего шаблона он желает больше - и таким образом жадный квантификатор при несоответсвии начинает отдавать в оставшийся шаблон по одному символу а нежадный собирать - и соответственно к моменту совпадения позиция поиска жадного шаблона находится дальше чем у нежадного


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB