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
Форумы портала PHP.SU :: Версия для печати :: Вытянуть последнее вхождение
Форумы портала PHP.SU » PHP » Регулярные выражения » Вытянуть последнее вхождение

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

1. dup008 - 09 Июля, 2011 - 19:37:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $str = 'id="10" fdsafdas id="20" afdsfdasfd id="30" fafafaaaads';
  2. preg_match_all('#(id\="\d+")#is', $str, $match);
  3. print_r($match);


подскажите, как мне получить в массиве только id="30"
наверное куда то '$' нужно подставить
Спасибо
2. DeepVarvar - 09 Июля, 2011 - 19:42:09 - перейти к сообщению
не прав...
3. Champion - 09 Июля, 2011 - 19:55:22 - перейти к сообщению
#^.*(id\="\d+")#is
(Добавление)
или
#(id\="\d+")(?:(?!id\="\d+").)*?$#is Первое, скорее всего, быстрее. Ну или можно просто последний элемент массива взять.
4. dup008 - 09 Июля, 2011 - 20:32:58 - перейти к сообщению
Champion
а что означают '!' и ':' не встречал их еще
5. Champion - 09 Июля, 2011 - 20:40:06 - перейти к сообщению
(xxx) - на это можно сослаться через \цифра, и это возвращается в массиве в 3 параметре preg_match.
(?:xxx) - вот это не запоминается в массив и на это нельзя сослаться. Но бывает, что очень хочется, например, повторить не один символ, а последовательность. Вот \d+ - это повторение цифры. А если мы хотим, чтобы повторялась, например, цифра-буква-цифра, то напишем (?:\d\w\d)+.
(?!xxx) - это означает, что мы утверждаем, что после текущей позиции стоит что угодно, кроме последовательности ххх, но вперед при этом не сдвигаемся, а просто заглядываем.
(?:(?!xx).)? - последовательность символов, после которых не встречается xx.
6. dup008 - 09 Июля, 2011 - 21:12:47 - перейти к сообщению
Спасибо!

 

Powered by ExBB FM 1.0 RC1