2015-11-25 2 views
1

Я хотел бы заменить каждый \x на $matches[x], где x - число.Как заменить строку переменной?

Он работает только заранее определенные номера с str_replace:

str_replace(array(
    '\\1', 
    '\\2', 
    '\\3', 
    '\\4' 
), array(
    '$matches[1]', 
    '$matches[2]', 
    '$matches[3]', 
    '$matches[4]' 
), $string); 
+2

Take посмотрите на '' preg_repalce() '] (http://php.net/manual/en/function.preg-replace.php) – Rizier123

+0

Почему вы не можете создать первый аргумент динамически, исходя из длины второго аргумента? – arkascha

ответ

1

Использование регулярных выражений в preg_replace

Код:

<?php 

$str = '\\2 string \\123 gogog \\123 sda \\342 \\3525 wqe \\234'; 
echo preg_replace('~(\\\\)(\d+)~', '$matches[$2]', $str); 

Выход:

$matches[2] string $matches[123] gogog $matches[123] sda $matches[342] $matches[3525] wqe $matches[234] 
Смежные вопросы