PHP preg_replace url字符串

时间:2014-02-08 17:41:03

标签: php preg-replace

好的,所以我有一个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);

1 个答案:

答案 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