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

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

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

 

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

вид форума:
Линейный форум Структурный форум

тема: объясните замену
 
 автор: 1999   (27.02.2006 в 19:14)   письмо автору
 
 

Как-то раз я тут спрашивал как заменить [IMG]тратата[/IMG] на <img src="тратата">
Получил ответ

  $patern = "#\[img\][\s]*([\S]*)[\s]*\[\/img\]#si";
  $replacment = "<img border=0 src='\\1'>";
  $mes = preg_replace($patern,$replacment,$mes);

вот теперь хотелось бы понять эту замену
подскажите что конкретно значит каждый из символов в переменной pattern

   
 
 автор: Sergey89   (27.02.2006 в 19:41)   письмо автору
 
   для: 1999   (27.02.2006 в 19:14)
 

хмм... я бы иначен написал выражение:

$patern = "#\[img\](.*)\.(png|gif|jpeg|jpg)\[\/img\]#Usi"; 
$replacment = "<img border=0 src='\\1.\\2'>"; 

   
 
 автор: 1999   (28.02.2006 в 18:23)   письмо автору
 
   для: 1999   (27.02.2006 в 19:14)
 

кхм... расскажите плиз...

   
 
 автор: яяя   (04.03.2006 в 18:51)
 
   для: 1999   (28.02.2006 в 18:23)
 

ага расскажите пожалута

   
 
 автор: cheops   (05.03.2006 в 13:30)   письмо автору
 
   для: 1999   (27.02.2006 в 19:14)
 

Хм... что-то не заметил ваш вопрос... Всё что заключено в квадратные скобки обозначает один символ, например [\s] - один пробельный символ, а [\S] - один не пробельный символ. К классу пробельных символов относятся все невидимые символы вроде пробелов, переводов строк, возврата каретки, табуляции и т.п. Символ * - называется квантификатором и означает, что символ перед ним может появляться любое число раз, в том числе и 0. Т.е. [\s]* - означает любое число пробельных символов, а [\S]* - любое число непробельных символов.
Для того, чтобы использоваться спец-символы в их исходном значении, например, квадратные скобки - их следует экранировать обратным слешем \[ и \].
Круглые скобки используются для группировки символов, а также для выделения частей в регулярном выражении - они нумеруются от 1 до 100. Так потом во втором аргументе функции preg_replace() можно обращаться к первым круглым скобкам как к \\1, ко вторым \\2 и т.д.

   
 
 автор: 1999   (06.03.2006 в 18:47)   письмо автору
 
   для: cheops   (05.03.2006 в 13:30)
 

спасибо а что такое #si???

   
 
 автор: cheops   (07.03.2006 в 13:30)   письмо автору
 
   для: 1999   (06.03.2006 в 18:47)
 

# - это граница регулярного выражения, вместо неё можно использовать любой другой символ, например, |
"|\[img\][\s]*([\S]*)[\s]*\[\/img\]|si";

Границы обозначают начало и конец регулярного выражения, после последней границы могут указываться модификаторы, так i, например, сообщает, что регулярное выражение не должно зависеть от регистра, а s сообщает, что входной текст может содержать переводы строки и искать нужно по всему тексту, а не до первого перевода строки.

   
Rambler's Top100
вверх

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