你可以使用:^/panel(?:/(\d*)/?(\w*)/?)?$
$strs = array(
'/panel'
,'/panel/pages'
,'/panel/69'
,'/panel/69/pages'
);
foreach($strs as $str)
{
preg_match('#^/panel(?:/(\d*)/?(\w*)/?)?$#',$str,$matches);
list($orig,$number,$pages) = array_pad($matches,3,false);
echo "<pre>";
print_r(compact('orig','number','pages'));
echo "</pre>";
}
/* OUTPUT:
Array
(
[orig] => /panel
[number] =>
[pages] =>
)
Array
(
[orig] => /panel/pages
[number] =>
[pages] => pages
)
Array
(
[orig] => /panel/69
[number] => 69
[pages] =>
)
Array
(
[orig] => /panel/69/pages
[number] => 69
[pages] => pages
)
*/
你能發表你試過的嗎?它將幫助我們評估您需要學習的內容,而不僅僅是給你答案。 –
爲什麼你需要正則表達式?正如你所提到的,你可以[分解](http://php.net/manual/en/function.explode.php)分隔符'/'來分別檢查每個部分。正則表達式在這裏是一個矯枉過正的事情。 – viraptor
「我怎樣才能爆炸出去$數字(如果存在)...」*有趣的事實:*你通常不能爆炸,然後出去:) –