以下のサンプル URL では、test1とtest3の両方を一致させる必要があります。
http://www.domain.com/:test1/test2/:test3
この正規表現はそれを行っていません:
(:.*?/?)
何かご意見は?
それはあなたが探しているものですか?
/:([^\/]+)/i
これは次のことを行います:
$str = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('~:\w+~', $str, $matches);
var_dump($matches);
出力:
array(1) {
[0] =>
array(2) {
[0] =>
string(6) ":test1"
[1] =>
string(6) ":test3"
}
}
説明:
~ starting delimiter
: a colon
\w a *word* char
+ as many of them as possible
~ ending delimiter
これはあなたのために働くかもしれないと思います:
$string = 'http://www.domain.com/:test1/test2/:test3';
preg_match_all('#:.*?/|:.*#i', $string, $matches);
var_dump($matches);