-1

私は再び私の無知を示​​すために戻ってきました。

特定の場所の URL にある番号を取得するのに支援が必要です。URL の残りの部分にも数字が含まれている可能性があるため、1 つの場所からのみ数字を取得するように制限する必要があります。次に例を示します。

http://www.example.com/99-Kittens-1382/animals

すべての数字を取得するために ereg_replace を使用していましたが、次のことに気付き
まし
た。

したがって、この場合、私が望んでいた 1382 ではなく、991382 になりました。

URL 構造は常に -####/ である必要があるため、それに基づいて一致できるはずです。(ダッシュ、4 つの数字、スラッシュ)

私はいつも正規表現のマッチングが苦手でした。誰でも私を助けることができますか?

4

4 に答える 4

2

これはおそらく、正規表現の複雑さなしで行う方がよいでしょう:

$urlParts = parse_url($str);
$pathParts = explode('/', $urlParts['path']);
$firstParts = explode('-', $pathParts[1]);
$numberYouWant = array_pop($firstParts);

動いているのを見る

于 2012-01-16T17:39:38.637 に答える
1
$a="http://www.example.com/99-Kittens-1382/animals";
echo preg_match("/.*?\\/(\\d+)-.*?-(\\d+)\\//",$a,$m)."\n";
print_r($m);

与える

1
Array
(
    [0] => http://www.example.com/99-Kittens-1382/
    [1] => 99
    [2] => 1382
)
于 2012-01-16T17:41:32.520 に答える
1
preg_match('#-(\d{4})/#', $url, $matches);
echo $matches[1];
于 2012-01-16T17:39:51.287 に答える
0
$return = preg_match('/-([0-9]{4})/', 'http://www.example.com/99-Kittens-1382/animals', $matches)

動作する場合、(および)グループは一致し、[0-9]は一致する文字の範囲であり、{4}は一致させたい前のグループの正確な量です。一致は$matches[1]にあります

于 2012-01-16T17:42:37.263 に答える