問題 × 解決策

PHPで現在のURLを最後のスラッシュ以降を省いて取得する

  • 2020年01月22日
  • PHP

問題

PHPで現在のURLを最後のスラッシュ以降を省いて取得するには?

解決策

「$_SERVER[“HTTP_HOST”] . $_SERVER[“REQUEST_URI”]」で現在のURLを取得し、正規表現で/(スラッシュ)以降を取る。

 

現在のURLを最後のスラッシュ以降を省いて取得

現在のURLを最後のスラッシュ以降を省いて取得する方法をご紹介します。

現在のURLの取得

まず、現在のURLの取得方法です。
現在のURLを取得するには、「$_SERVER」関数を使用します。

$_SERVER["HTTP_HOST"] // ホスト名(ドメイン)【例:keylopment.com】
$_SERVER["REQUEST_URI"] // ドメイン以下のパス【/faq/】
$_SERVER["HTTPS"] // SSLが有効(https://)ならば「on」を、そうでないなら「NULL」を返す

上記を組み合わせます。

$nowurl = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];

現在のURLから最後の/(スラッシュ)以降を取得

現在のURLから最後の/(スラッシュ)以降を取得するために、「preg_match」を使用します。

preg_match("検索パターン", "検索対象の文字列", $matches(検索結果の配列));

「preg_match」を用いて、最後のスラッシュ以降を現在のURLから取得します。

preg_match("/[^\/]+$/", $nowurl, $matches);
  • 正規表現を用いた「/[^\/]+$/」で、最後のスラッシュ以降を取得できます。

最後に、現在のURLから、最後の/(スラッシュ)以降($matches)を省く

ある文字列の中での特定の文字列を検索して割り出し、別の文字列に置き換えるには、「str_replace」を使用します。

str_replace("検索する文字列", "置き換え後の文字列", "置き換えを行う文字列");

「str_replace」を用いて、先ほど取得した最後のスラッシュ以降を取り払います。

$nowurl = (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
preg_match("/[^\/]+$/", $nowurl, $matches);
$strurl = str_replace( $matches[0], '', $nowurl );
  • 検索結果の配列「$matches」には、最後のスラッシュ以降の文字列が格納されています。
  • 「str_replace」で、 「$matches」の配列内の最初の値「$matches[0]」の文字列を検索し、該当する部分を「’’」で空の文字列に置き換えることで取り払います。

参考ページ

【PHP($_SERVER)サーバー変数一覧と実用例】
https://www.flatflag.nir87.com/server-358

【PHPでHTTPS(SSL)接続じゃなかったらHTTPSのURLにリダイレクトする – アインシュタインの電話番号】
http://blog.ruedap.com/2011/06/08/php-http-https-ssl-url-redirect

【PHPの正規表現 初心者向け基本~ 早見表掲載! | WEPICKS!】
https://wepicks.net/phpref-regular_expression/

【PHP – スラッシュ以降の文字列を取得する方法|teratail】
https://teratail.com/questions/127449

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

16 + eleven =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧