простой preg_match начало ... конец - PullRequest
0 голосов
/ 09 декабря 2011

Я хотел поймать все совпадения «объекта» в таком коде:

object InvalidFilterField3: TUNIField
  FieldType = uftString
  FieldName = 'PRI_SERIAL'
  Caption = sdfgsdfgsdfg
  Category = sdfgsdfgsdfgsdfg
  Opers = [opEqual, opLike, opInList, opIsNull, opIsNotNull]
  DefaultOper = opLike
  FieldIndex = 0
end
object UNIField1: TUNIField
  FieldType = uftDate
  FieldName = 'PRI_DT'
  Caption = sdfgsdfgsdfg
  Category = asdfasdfasdfasdf
  Opers = [opEqual, opNotEqual, opLarger, opSmaller, opEqualOrLarger, opEqualOrSmaller, opBetween, opIsNull, opIsNotNull, opIn]
  DefaultOper = opEqual
  FieldIndex = 1
end

думаю, что это должно быть /object(.*)end/m, но это не так = (

1 Ответ

3 голосов
/ 09 декабря 2011

Вам нужно передать в шаблон и модификатор dotall ( s ), чтобы сообщить PCRE, что точка означает что-нибудь (включая перевод строки), и модификатор ungreedy (U , подробнее о жадности и модификаторах на руководство PHP ):

preg_match_all('!object(.*)end!sU', $string, $matches);
print_r($matches);
...