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

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

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

 

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

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

тема: заменить число
 
 автор: sl1p   (20.10.2009 в 15:20)   письмо автору
 
 

Как дать приоритет чтобы заменить именно выражение в скобках?

тоесть может быть так:

page_(\d+)
(\d+)page
pa(\d+)ge

  Ответить  
 
 автор: heed   (20.10.2009 в 16:32)   письмо автору
 
   для: sl1p   (20.10.2009 в 15:20)
 

не понятно в каком смысле дать приоритет
заменяется обычно везде , или просто меняется порядок обработки разными выражениями
<pre><?
$txt
='
77page
page_55
pa12ge
345
'
;

echo 
preg_replace(
    
'#(?<=(p)age_|(pa)|)\d+(?(2)(?=ge)|(?(1)|(?=page)))#'
    
'0',$txt) ."\n\n"
.  preg_replace(
    array(
'#()(\d+)(page)#''#(pa(?:ge_)?)(\d+)(ge)?#'),
    
'$1-0-$3',$txt);
если решать одним выражением , получится что-то такое сложноватое с условными подмасками,
иногда быстрее работает несколько выражений как массив для preg_replace()
, и также вместо строки замены можно сделать массив строк замены
, чтобы не было надобности использовать такие конструкции

  Ответить  
Rambler's Top100
вверх

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