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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: знак долар и модификатор m

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
dadli
Отправлено: 29 Декабря, 2011 - 15:06:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




приветствую всем еше раз Улыбка
я так понял, если исползуется модификатор m, значит символ $ соответствует не толко конца данних, а конца кождои строки, кождои линии (конечно если ето данние многострочние)
написал регулярку:
PHP:
скопировать код в буфер обмена
  1. $str = 'aaaaaaaaa
  2. dddd
  3. eeeeeee';
  4. echo preg_replace("#(^.|.$)#ms",'<b>$1</b>',$str);


етот даст:
Цитата:
aaaaaaaaa dddd eeeeeee

то есть шаблон не содержит конец каждои линии, шаблон содержит конец всe данних, почему? я неправилно понял суть модификатор m ?

(Отредактировано автором: 29 Декабря, 2011 - 15:06:36)

 
 Top
EuGen Администратор
Отправлено: 29 Декабря, 2011 - 15:15:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Отвечу так.
PHP:
скопировать код в буфер обмена
  1. $str = 'aaaaaaaaa
  2. dddd
  3. eeeeeee';
  4. var_dump(preg_replace("/(.$)/m",'<b>$1</b>',$str));

Даст:
PHP:
скопировать код в буфер обмена
  1. string(45) "aaaaaaaaa<b>
  2. </b>
  3. dddd<b>
  4. </b>
  5. eeeeee<b>e</b>"

- предлагаю подумать почему


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dadli
Отправлено: 29 Декабря, 2011 - 15:34:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




EuGen
значит если исползуем модификатор m, знак долар соответствует - и конец все данних - и перевод строки (\n) для каждого линии, так?

(Отредактировано автором: 29 Декабря, 2011 - 15:35:30)

 
 Top
EuGen Администратор
Отправлено: 29 Декабря, 2011 - 15:37:51
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Почти. Вот тогда еще подсказка:
PHP:
скопировать код в буфер обмена
  1. $str = 'aaaaaaaaa
  2. dddd
  3. eeeeeee';
  4. var_dump(preg_replace("/(.[\n\r]$)/m",'<b>$1</b>',$str));

даст:
PHP:
скопировать код в буфер обмена
  1. string(38) "aaaaaaaa<b>a
  2. </b>
  3. ddd<b>d
  4. </b>
  5. eeeeeee"

(мне не сложно дать готовый ответ, но хочется, чтобы Вы поняли это на примерах)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dadli
Отправлено: 29 Декабря, 2011 - 15:39:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




EuGen
да да так более интересенее, сеичас Улыбка
(Добавление)
EuGen
Растерялся
ахх мне очен стыдно но етот вираженя я так вижу:
(если есть модификатор m) знак долар не сам перевод строки (\n), а просто конец для кождои строки.

но ето не так и ето видно из примера, котории я впервом посте написал.
что же в етом случае знак $ Однако

(Отредактировано автором: 29 Декабря, 2011 - 16:09:10)

 
 Top
EuGen Администратор
Отправлено: 29 Декабря, 2011 - 16:14:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ответ: $ - это просто символ \n а у Вас присутствуют как \n так и \r (перевод строки у Вас равен \r\n). Оттого предыдущим к $ является \r а не предыдущий "значащий" символ.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dadli
Отправлено: 29 Декабря, 2011 - 16:31:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




EuGen
ага ясно.
очен приятни биль такои режим "вопрос-ответи", спасибо огромное за "мастерклас" Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB