2015-10-22 4 views
0

получил этот кодpreg_replace с косой чертой в конце

<?php 

$string = "list page.php?cpage=1, list page.php?cpage=2, list page.php?page=3 thats all"; 
$string = preg_replace("/\?cpage=[0-9]/", "/", $string); 
echo $string; 
//result 
//list page.php/, list page.php/, list page.php/ thats all 
//what i want 
//list page.php/1/, list page.php/2/, list page.php/3/ thats all 
?> 

любой может помочь?

демо https://3v4l.org/LEvph

+1

У вас есть вопросы? – Rizier123

ответ

1

Захват значение между() и проецировать его обратно через $ 1:

$string = "list page.php?cpage=1, list page.php?cpage=2, list page.php?page=3 thats all"; 
$string = preg_replace("/\?c?page=([0-9]{1,})/", "/$1/", $string); 
echo $string; 

([0-9]{1,}) означает один или несколько цифр. Надеюсь, это поможет.

+0

благодарю вас за работу :) – singodimejo

1
<?php 
    $string = "list page.php?cpage=1, list page.php?cpage=2, list page.php?page=3 thats all"; 
    $string = preg_replace("/\?c?page=([0-9]+)/", "/$1/", $string); 
    echo $string; 
?> 

Выражение использует capturing group([0-9]+), чтобы соответствовать любому целому числу и захватить его значение. Затем он использует /$1/ в качестве замены. Уведомление $1 является обратной ссылкой на значение, полученное группой.

Например:

preg_replace("/\?c?page=([0-9]+)/", "/$1/", "page.php?cpage=3"); 

захватывает "3" в группе 1 и /$1/ оценивается в замене как "/3/".

Смежные вопросы