获得此代码
<?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
?>
任何人都可以提供帮助吗?
答案 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,})
表示一个或多个数字。
希望这会有所帮助。