Здравствуйте все php программисты. У функции preg_match() можно задать третий параметр $matches, являющийся массивом. Никак не могу разобраться, зачем этот массив нужен. Когда в нём будет один элемент, а когда 2 и больше? Что за значения в нём будут содержаться? Также у функции есть пятый параметр $offset, который тоже не очень понятный. Объясните их значение. Спасибо.
Я не знаю что такое подмаска. Апельсин, по ссылке, что вы мне дали, похоже, некорректный или просто устаревший перевод. Вот что там написано: Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска. Аналогичного результата можно достичь, заменив subject на substr()($subject, $offset). Дополнительный параметр offset доступен начиная с PHP 4.3.3. А так на php.net: Using offset is NOT equivalent to passing substr($subject, $offset) to preg_match() in place of the subject string, because pattern can contain assertions such as ^, $ or (?<=x). Наверное, лучше пользоваться php.net как первоисточником
Я спросил, что это за параметры, потому что не знаком с регулярными выражениями и не могу разобраться с мануалом.
Пример: есть дата в таком виде: 20101006, нужно сделать вот так: 06.10.2010 можно использовать такой код PHP: <? $date = '20101006'; $matches = array(); if (preg_match('/(\d{4})(\d{2})(\d{2})/')){ echo $matches[3].".".$matches[2].".".$matches[1]; } ?> значением $matches[1] - будет то что совпало с первыми скобками регулярного выражения, $matches[2] со вторыми и т.д. это и называется соответственно 1-я, 2-я ... маски. а $matches[0] - полное совпадение регулярного выражения но намного интереснее функция preg_match_all и ее третий параметр
StVolodymyr, спасибо за помощь. Сам постепенно осваиваю эти функции и понемногу разбираюсь в этих параметрах