好的,所以我有一个preg_replace语句来替换url字符串。 第一个和第二个变量工作,但我需要帮助第二个字符串子....
$html = str_replace('index.php','index',$html);
$html = preg_replace('/index\?cat=([a-z0-9]+)/i','index/$1',$html);
$html = preg_replace('/index\?cat=([a-z0-9]+)/&sub=([a-z0-9]+)/i','index/$1/$2',$html);
答案 0 :(得分:2)
假设$html
包含:
index.php?cat=123&sub=456
在str_replace
$ html变为:
index?cat=123&sub=456
在第一个preg_replace之后:
index/123&sub=456
然后第二个preg_replace不匹配。
您最好修改preg_replace的顺序:
//$html -> index.php?cat=123&sub=456
$html = str_replace('index.php','index',$html);
//$html -> index?cat=123&sub=456
$html = preg_replace('/index\?cat=([a-z0-9]+)&sub=([a-z0-9]+)/i','index/$1/$2',$html);
//$html -> index/123/456
$html = preg_replace('/index\?cat=([a-z0-9]+)/i','index/$1',$html);
//$html -> index/123/456