Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Модификаторы s и m

Сообщения:  [1-10]   [11-16] 

 
 автор: ddhvvn   (11.07.2009 в 23:05)   письмо автору
 
   для: alexey_tihonenko   (11.07.2009 в 20:28)
 

Даже если так, то нужно сделать кроссбраузерный вариант

  Ответить  
 
 автор: alexey_tihonenko   (11.07.2009 в 20:28)   письмо автору
 
   для: ddhvvn   (11.07.2009 в 18:58)
 

Первый вариант под виндой выводит 0. preg_match не находит совпадения.

  Ответить  
 
 автор: ddhvvn   (11.07.2009 в 18:58)   письмо автору
 
   для: GeorgeIV   (11.07.2009 в 16:51)
 

т.е. первый вариант не работает под виндой?

  Ответить  
 
 автор: GeorgeIV   (11.07.2009 в 16:51)   письмо автору
 
   для: Alexey_Tihonenko   (11.07.2009 в 16:37)
 

Этот вариант работает под Юниксом,
<?php  
$str 
"a--b 
c--d"

$pattern "/b$/m"
echo 
preg_match($pattern$str); 
?> 

а этот под виндой
<?php  
$str 
"a--b 
c--d"

$pattern "/b\r$/m"
echo 
preg_match($pattern$str); 
?>

Так что, не все так однозначно, но по крайней мере яснее, чем вначале.

  Ответить  
 
 автор: Alexey_Tihonenko   (11.07.2009 в 16:37)   письмо автору
 
   для: GeorgeIV   (11.07.2009 в 16:21)
 

Ну, у меня практической цели не было сейчас, я пока просто изучаю регулярные выражения. Главное было понять как работают модификаторы "s" и "m" в связке с PHP. Этой цели вполне удалось достичь. Еще раз спасибо за ответы!

  Ответить  
 
 автор: GeorgeIV   (11.07.2009 в 16:21)   письмо автору
 
   для: alexey_tihonenko   (11.07.2009 в 16:11)
 

Боюсь, что это самая неустойчивая проверка, я пробовал это код сохранять в форматах юникса и винды и получал разный результат.

  Ответить  
 
 автор: alexey_tihonenko   (11.07.2009 в 16:11)   письмо автору
 
   для: GeorgeIV   (11.07.2009 в 15:51)
 

Большое спасибо за дополнение! Теперь все понятно. Концом строки является не последний видимый символ в ней, а символ переноса строки - \r. И, например, чтобы определть заканчивается ли какая-либо из строк текста на "b" можно использовать вот такой скрипт:
<?php
$str 
"a--b
c--d"
;  
$pattern "/b\r$/m";  
echo 
preg_match($pattern$str);
?>

Который теперь работает!!!

  Ответить  
 
 автор: GeorgeIV   (11.07.2009 в 15:51)   письмо автору
 
   для: GeorgeIV   (11.07.2009 в 15:46)
 

m - означате multiline, соответственно переносы строк не являются концом текста, для
 анализа берется весь текст. В примере конец - это d.

С этой фразой, я все таки не прав. Все с точностью наоборот в первой фразе, только с дополнением, что переносы строк также начинают иметь позицию в строке, а не являются просто концом строки.

  Ответить  
 
 автор: GeorgeIV   (11.07.2009 в 15:46)   письмо автору
 
   для: Alexey_Tihonenko   (11.07.2009 в 13:44)
 

$str = "a--b\r
c--d"; 
$pattern = "/\r$/m"; 
echo preg_match($pattern, $str); 

  Ответить  
 
 автор: Alexey_Tihonenko   (11.07.2009 в 13:44)   письмо автору
 
   для: GeorgeIV   (11.07.2009 в 11:40)
 

Не могли бы Вы привести какой-нибудь простой пример с метасимволом $ в котором при использовании модификатора m соответствие шаблону будет найдено, а при отсутствии использования этого модификатора - не будет?
А то что-то я совсем запутался.....

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования