0

私は PHP を使用しており、正規表現パターンを作成して URL パスの一部を取得しようとしましたが、うまくいきませんでした。

可能な URL パスは次のいずれかです。

  • 「製品/zzz」
  • 「yyyyyyyy/product/zzz」
  • "xxxxx/yyyyyyyy/product/zzz"
  • "xxxxx/yyyyyyyy/.../product/zzz" (... は他の可能な単語を意味します)

キャプチャする必要があるのは、「製品」の前の部分です。

最初のケースでは、結果は空の文字列になります。残りは「yyyyyyyy」、「xxxxx/yyyyyyyy」、「xxxxx/yyyyyyyy/...」です。

ここで誰かヒントをくれませんか?ありがとう!

PS。私が欲しかった部分は、同じパターン「xxxx/」の繰り返しのようです。しかし、私は正規表現のグループを使用するのが苦手です。

アップデート:

パターン「xxx/」をゼロ回以上の繰り返しでキャプチャすることで、おそらく解決策を見つけました:「([^/]+/)*」

したがって、完全な正規表現は "(([^/]+/)*)product/([^/]+)" になります。

@SERPRO: 「Live RegExp」のテストに合格しました。お役に立てば幸いです。

4

3 に答える 3

1

私は使用しますparse_url()

$path = parse_url($url, PHP_URL_PATH);
// Deal with $path to figure out what's after '/product/'
于 2013-03-12T16:27:23.230 に答える
0

これはそれを行う必要があります:

^(.*[^/]|)/*product/[^/]+/*$

また、パスの最後に任意の数のスラッシュを許可します。括弧内はあなたの結果です。

于 2013-03-12T16:14:58.887 に答える
0

これはあなたのために働くはずです:

#(.*?)/?product.*\b#

ここで結果文字列の例を見ることができます:

http://xrg.es/#5awa10

于 2013-03-12T16:26:40.593 に答える