以下の次の正規表現は、予想どおりに一致するようになりました。数字を括弧で囲んでいることに注意してください。これにより、$ matchsの数値がキャプチャされるため、後で使用できます。
<?php
header('Content-Type: text/plain');
foreach(array(0,5,10,99) as $i)
{
$num = str_pad($i, 2, '0', STR_PAD_LEFT);
$url = 'checkout/'.$num.'/payment';
if(preg_match('/checkout\/([0-9]+)\/payment/i', $url, $matches))
{
echo 'url: "'.$url."\"\n";
echo 'hello: '.$matches[1]."\n";
print_r($matches);
}
echo "\n\n";
}
?>
このコードは次の出力を生成します。
url: "checkout/00/payment"
hello: 00
Array
(
[0] => checkout/00/payment
[1] => 00
)
url: "checkout/05/payment"
hello: 05
Array
(
[0] => checkout/05/payment
[1] => 05
)
url: "checkout/10/payment"
hello: 10
Array
(
[0] => checkout/10/payment
[1] => 10
)
url: "checkout/99/payment"
hello: 99
Array
(
[0] => checkout/99/payment
[1] => 99
)
preg_matchのマニュアルページ
preg_match_allのマニュアルページ
PCRE正規表現構文のマニュアルページ
正規表現パターンで可能な修飾子