preg_replace最后有斜杠

时间:2015-10-22 11:24:26

标签: php 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

2 个答案:

答案 0 :(得分: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");

在第1组中捕获"3",在替换中将/$1/评估为"/3/"

答案 1 :(得分: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,})表示一个或多个数字。 希望这会有所帮助。