質問: 上記のURLを下記のようにするには、どのような正規表現?を書くべきでしょうか? URLのドメイン以外は可変の値です。 詳しい方、ご教示ください。よろしくお願いいたします。 上記のドメイン以降で、4個目以降のスラッシュを削除したいです。
回答: URLから4番目のスラッシュ以降を除外してマッチさせたいということであれば、 ``` preg_match('#http:/(?:/[^/]+){4}#', $url, $matches); $result = $matches[0]; // ドメインを限定するなら // #http://www\.amazon\.co\.jp(?:/[^/]+){3}# ``` といった感じでしょうか。`http:/` から、(ドメイン名も含め)スラッシュから始まりスラッシュを含まないブロック `/[^/+]` が4回続くまでマッチします。4番目のスラッシュなしでクエリストリング等がある場合も取り除く場合は `[^/]` の代わりに `[^/?]` とするとよいかと思います。 まあAmazonに限った話なら `/dp/xxxx` を認識して細かくマッチさせてもいいですが。 ``` preg_match('#https?://www\.amazon\.co\.jp/(?:[^/]+/)?dp/[A-Z0-9]+#', $url, $matches); ``` 実行サンプル