下記の意味が分かりません。
( !empty($_SERVER['SERVER_NAME']) && preg_match('#^(?:[a-z0-9\-]+\.){1,}[a-z]{2,}$#i', $_SERVER['SERVER_NAME']) ) ? preg_replace('#^www\.#', '.', $_SERVER['SERVER_NAME']) : '';
<分かる範囲>
$_SERVER['SERVER_NAME']が空ではなく、かつ、$_SERVER['SERVER_NAME']の中に'#^(?:[a-z0-9\-]+\.){1,}[a-z]{2,}$#i'があったら、$_SERVER['SERVER_NAME']の中の'#^www\.#'を'.'へ置き換え
<知りたいこと>
正規表現の所の意味と、結局、この一文で何をしようとしている(と予想される)か、教えてください
No.1ベストアンサー
- 回答日時:
正規表現の意味は、
# perl互換の場合、 / の代わりに、パターン括りに # を使える
^ 先頭
(?:[a-z0-9\-]+\.) ()で、ひとまとめのサブパターン
? は複数の意味がありますが、手前が開始用丸括弧で、後方に : が続くので、「値のキャプチャをしないサブパターン」でしょう。
[a-z0-9\-] a-z または 0-9 または '-'文字 のいずれか1文字
+ 手前の文字種が1文字以上
\. '.'文字
(?:[a-z0-9\-]+\.){1,} () 内のパターンが一回以上あること、キャプチャしないことにより、実行時間を少々早くしている。
[a-z]{2,} a-z のいずれかの文字が 2個以上
$ 終端
i パターン修飾子: ##で括られたパターンの中の文字は 大文字にも小文字にもマッチ
よって、 a-z または 0-9 または '-' のいずれかの文字が1文字以上に '.'文字の続くパターンが一つ以上有って、最後に 2文字以上のアルファベットが続くものにマッチ
利用目的:実行serverアプリによっては、localhost アクセスだとドメイン名を含まないことがあるけど(windowsだとコンピューター名が入っていたりする)、きちんとドメイン名が付いてる(間に '.' が入っている)ときに、さらに次のreplaceを実行する。
前後関係が不明だけど、予想としては、apache でvirtual host 実行時に www.host名 で、default hostにアクセスするけど、このときに別のvirtual host名に切り替えてリンクを作成しようとしてるってとこでしょうか。
正規表現の詳細は以下を参照してください
http://jp.php.net/manual/ja/reference.pcre.patte …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- その他(開発・運用・管理) Windows serverでマルチキャスト通信の確認をしたいです。MicrosoftよりMPING 1 2023/03/31 01:05
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- 2ちゃんねる Server relocation is in progress.って何でしょうか 1 2022/10/27 19:46
- その他(ブラウザ) グーの質問見ようとしたらブラウザ版で 3 2022/03/28 10:33
- その他(OS) Windows Server評価版がダウンロードできない 1 2022/05/06 13:32
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- その他(ソフトウェア) 至急!500 Internal Server Errorこのエラーはなんですか?原因と解決法教えてく 4 2022/06/21 15:50
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPの正規表現で【】内を文字列...
-
onedrive にexcelファイルをア...
-
こちらはただの直列処理ですか?
-
ワードプレス、Contact Form 7...
-
拡張子php画像をjpg画像等に変...
-
PHPとCSVで簡易データベースな...
-
include先でのinclude元の変数...
-
リダイレクト元のURLの取得方法...
-
メールフォームのタイトルが文...
-
php エラー
-
PHPのif文でその処理を途中で抜...
-
VBでメールを送る時のSMT...
-
one drive のアップロード失敗...
-
別PHPファイルに変数を渡す
-
ワードプレスサイト PHP8.0.25...
-
パースエラーとは?
-
Image Magickの関数が使えない
-
文字化けで混乱中です...
-
phpでクラスのメソッドで同名の...
-
【file_exists】ファイルが存在...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 指定文字列以降の削除
-
PHPの変数で最初から2行分の文...
-
DIRECTORY_SEPARATORについて
-
^[a-zA-Z_][a-zA-Z0-9_]* でマ...
-
正規表現で「チルダ(~)」をマッ...
-
PHPでurlから第4レベルドメイン...
-
PHPと正規表現とワイルドカード...
-
正規表現でタグからURLを取り出...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
index.phpに入るには、どうすれ...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
PHP8を使うと、大量のWarningが...
-
別ファイルの変数を呼び出した...
-
index.phpって何ですか? 具体...
-
awsにApacheとPHPを入れて、何...
-
Subversionのリポジトリの削除
-
phpでPEAR::DBを使っているので...
-
.phpと.incファイルの違いはな...
おすすめ情報