2013-09-02 11 views
0

Мне нужно понизить переменную preg на единицу. Пример:Математические операции в preg_match

$code = A4-7; 
$new = preg_replace('/A([0-9])\-([0-9])/', 'S($1-1)-$2', $code); 

Мне нужно сделать что-то подобное, поэтому замена preg заменит S3-7. Есть ли какой-то способ?

+3

Используйте 'preg_replace_callback'. – DCoder

ответ

1

Попробуйте это (используя preg_replace_callback)

$code = "A4-7"; 

function myfunc($matches) 
{ 

    return 'S'.($matches[1]-1).'-'.$matches[2]; 
} 
echo preg_replace_callback("#A(\d)-(\d)#","myfunc",$code); 
0

Сначала вам нужно извлечь значения, выполнить математические операции с извлеченными значениями, а затем восстановить строку для достижения желаемого.

Например:

<?php 
$code = 'A4-7'; 
preg_match('/A([0-9])\-([0-9])/', $code, $matches); 
$new = 'S'.($matches[1]-1).'-'.$matches[2]; 
?> 
Смежные вопросы