所以我想檢查一個字符串的格式爲查詢網址:使用的preg_match與「通配符」
結賬/ 00 /支付
其中00可以是任何數字。
我試着使用的preg_match要做到這一點,但它沒有工作:
if(preg_match('/checkout/ [0-9] /payment/', $url, $matches)){
echo 'hello';
}
而且我想如果字符串字「支付」 如結帳/ 00之後的任何字符它失敗/ payment/more
所以我想檢查一個字符串的格式爲查詢網址:使用的preg_match與「通配符」
結賬/ 00 /支付
其中00可以是任何數字。
我試着使用的preg_match要做到這一點,但它沒有工作:
if(preg_match('/checkout/ [0-9] /payment/', $url, $matches)){
echo 'hello';
}
而且我想如果字符串字「支付」 如結帳/ 00之後的任何字符它失敗/ payment/more
下面的正則表達式現在可以像您期望的那樣匹配。請注意,我用括號包圍了數字。這會捕獲$匹配中的數字,以便稍後使用它。
<?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
)
你的正則表達式裏有多餘的空格,而[0-9]
只會匹配一個數字。
此外,如果您使用/
開始並結束您的正則表達式,則不能在其中使用/
,除非您使用反斜槓(\/
)轉義它。
我用~
代替這個。
if(preg_match('~checkout/([0-9]+)/payment$~', $url, $matches)) {
echo 'Matched! (' . $matches[1] . ')';
}
這將匹配一個或多個數字。
[0-9]
匹配單個數字。如果您想匹配兩位數字,請附加{2}
:[0-9]{2}
。