Как быть с переводом строк

Тема в разделе "Регулярные выражения", создана пользователем dazed, 19 май 2008.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    Чтобы долго не рассказывать сразу пример:

    Код:
     $test = "-ПРОСТОТЕКСТпростоТЕКСТМНОГОтекстаи46549874-";
    preg_match( "/-ПРО.*74-/"  , $test, $restest);
    
      echo $restest[0];
    
    
    В этом случае регулярное выражение хорошо обрабатывается, как и положено, но в моем случае в тексте бывает перевод строк на новую, т.е.

    Код:
     $test = "-ПРОСТОТЕКСТпростоТЕ
    КСТМНОГОтекстаи46549874-";
    
    
    И в этом случае уже рег. выражение не срабатывает и выдает ошибку! Почему? Ведь у меня мета символ "." (точка), что по идее любые символы должны входить, но почему тогда перевод строк не входит? Как быть в этом случае?
    Я пока, что вижу один способ - перед рег. выражением в тексте убирать везде перевод каретки. Но может есть по красивее решение?
     
  2. Dimkich

    Dimkich Постоялец

    Регистр.:
    10 июл 2007
    Сообщения:
    119
    Симпатии:
    36
    "/-ПРО[\W\w]*74-/"
    делаю так, чтобы перевод строки тоже цеплялся
     
    dazed нравится это.
  3. Avtandil

    Avtandil Создатель

    Регистр.:
    30 сен 2006
    Сообщения:
    30
    Симпатии:
    24
    Вот так достаточно красиво? :)
    PHP:
    $test '-ПРОСТОТЕКСТпростоТЕ
    КСТМНОГОтекстаи46549874-'
    ;
    echo 
    preg_match('/-ПРО.*74-/s',$test) ? '' 'NOT ','MATCH<br>';
    echo 
    preg_match('/^-ПРО.*74-$/s',$test) ? '' 'NOT ','MATCH';
     
    dazed нравится это.
  4. ozware

    ozware

    Регистр.:
    22 апр 2007
    Сообщения:
    327
    Симпатии:
    42
    нужно воткнуть модификатор s в regexp, тогда символ точка будет включать в себя переводы строк
     
    dazed нравится это.
  5. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    Спасибо, по совету Dimkich, Avtandil и ozware заработало!
     
Статус темы:
Закрыта.