它會給你的結果如預期
$str1 = "link/usa";
$str2 = "link/{country}";
if(preg_match('~link/([a-z]+)~i', $str1, $matches1) && preg_match('~link/{([a-z]+)}~i', $str2, $matches2)){
$$matches2[1] = $matches1[1];
echo $country;
}
注:上面的代碼只是解析字母,您可以在範圍內按照需要擴展字符。
UPDATE:
你也可以做到這一點使用explode
,見下面的例子:
$val1 = explode('/', $str1);
$val2 = explode('/', $str2);
${rtrim(ltrim($val2[1],'{'), '}')} = $val1[1];
echo $country;
更新2
$str1 = "link/usa/texas/2/";
$str2 = "/link/{country}/{city}/{page}";
if(preg_match_all('~/([a-z0-9]+)~i', $str1, $matches1) && preg_match_all('~{([a-z]+)}~i', $str2, $matches2)){
foreach($matches2[1] as $key => $matches){
$$matches = $matches1[1][$key];
}
echo $country;
echo '<br>';
echo $city;
echo '<br>';
echo $page;
}
性能如何?我可以依靠這個循環可能上百次嗎? – tika
百次,沒什麼大不了的,試試吧 –
@tika你也可以用'explode'來做,如果你想避免使用正則表達式,請看我更新後的回答 –