質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1821閲覧

正規表現についてです

toll_tree

総合スコア199

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2019/05/13 09:29

編集2019/05/13 10:05

laravelを学習していたのですが、ミドルウエアについて分からない部分があった為、ご質問させて頂きました。

php

1<?php 2 3namespace App\Http\Middleware; 4 5use Closure; 6 7class HelloMiddleware 8{ 9 /** 10 * Handle an incoming request. 11 * 12 * @param \Illuminate\Http\Request $request 13 * @param \Closure $next 14 * @return mixed 15 */ 16 public function handle($request, Closure $next) 17 { 18 $response = $next($request); 19 $content = $response->content(); 20 $pattern = '/<middleware>(.*)</middleware>/i'; 21 $replace = '<a href="http://$1">$1</a>'; 22 $content = preg_replace($pattern,$replace,$content); 23 24 $response->setContent($content); 25 return $response; 26 27 } 28} 29

上記コードは、コントローラの呼び出し後に実行される、ミドルウエアのサンプルコードになります。

php

1$pattern = '/<middleware>(.*)</middleware>/i'; 2 $replace = '<a href="http://$1">$1</a>'; 3 $content = preg_replace($pattern,$replace,$content);

上記の部分は、<middleware>〇〇</middleware>というテキストを、<a href="http://〇〇">〇〇</a>というテキストに置換する処理であり、これにより、<middleware>というタグにドメイン名を書いておけば、そのドメインにアクセスするためのリンクが自動生成されるようになる、との説明がありました。
お聞きしたい部分なのですが、〇〇の部分は、aタグ内では、「$1」とあり、<middleware>タグ内では、(.)とありますが、aタグ内の$1は、別の文字、例えば$dataなどでもよいのでしょうか?
また、(.
)←これは何を意味しているのでしょうか?
どなたか、ご助言頂けましたら幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/13 09:38 編集

preg_replace() を検索すれば、一通りの情報が追えるのだが、どこまで調べて何がわからないのだろう? 私に言わせれば「preg_replace()の使い方がわかりません」としか思えず、Laravelとか関係ない話なのだが。
toll_tree

2019/05/13 09:43

larvel固有の問題と認識していたのですが、単なる正規表現の問題だったのですね。。 勘違いしてしまっていました。
mikkame

2019/05/13 09:52

> larvel固有の問題と認識していたのですが、単なる正規表現の問題だったのですね。。 とのことですので、勘違い(うっかり間違って思い込む事)ではなく 引き出しの少なさ故に、間違えたのです。勘違いで済ましてしまうと、発展がないので、勿体無いかと思います
退会済みユーザー

退会済みユーザー

2019/05/13 09:59

似たような境遇の人の助けになるように、質問につける件名を適切なものに直すべきかと。Laravelとか関係ないタグも外すなど。
toll_tree

2019/05/13 10:06

正規表現はやはりちゃんと勉強しておくべきですね。。
m.ts10806

2019/05/13 12:06

タイトルで何が問題かわからないのは問題ですね。 しかし、正規表現くらいなぜLaravel離れて単体のコードで試しませんか?単体のコード動かすためにローカル動かすの面倒ならpaiza.ioとか使うと良いですよ。
toll_tree

2019/05/13 12:23

paiza.ioって便利そうですね。 少し、コードを動かす際は使ってみたいと思います。 しかし、正規表現難しいですね... 正規表現というのは、どのレベルまで習得する必要があると考えらますでしょうか?
m.ts10806

2019/05/13 12:27

何が聞きたいのかわかりません。 私は「必要なときに必要な表現が使えればいい」と思ってて「別に正規表現使わなくても要件満たせるならそれでもいい」とさえ思ってるので、今でも必要に応じて調べてます。正規表現だけ学習しようと思ったら果てしなくてきりがないですよ? もっと覚えなきゃいけないことがたくさんあります。
toll_tree

2019/05/13 12:30

そうですね。必要ならば、必要に応じて調べていくようにしたいと思います。
guest

回答1

0

ご質問内容について
Laravel、ミドルウェアは関係なく、PHPのpreg_replace関数についての質問になっているかと思います。
より良い回答を得たい場合はタイトルを変更されるほうが良いかと思います。

preg_replaceについて

https://www.php.net/manual/ja/function.preg-replace.php
https://www.sejuku.net/blog/22175

aタグ内の$1は、別の文字、例えば$dataなどでもよいのでしょうか?

よくありません

(.*)←これは何を意味しているのでしょうか?

正規表現 でお調べください。


差し出がましいようですが
Laravel固有の問題か、LaravelのMiddleware固有の問題か、PHP本体の問題かが区別つくように
まずはPHPの基礎を学ばれる事をお勧めします

投稿2019/05/13 09:40

編集2019/05/13 09:41
mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/13 09:44

ご回答ありがとうございます。 laravelのミドルウエアが関係している問題と勘違いしてしまっていました。 正規表現について、調べてみたいと思います。
mikkame

2019/05/13 09:50

> laravelのミドルウエアが関係している問題と勘違いしてしまっていました。 こちらですが、PHPの基礎を学べばこのような事は起きず、学習もスムーズに進むかと思いますので まずはPHPの勉強をする事をお勧めします。
toll_tree

2019/05/13 09:56

あ、いえ、実は、PHPの基礎は学習したんですよね...w ただ、正規表現に関しては、苦手だったので、あまり勉強はしませんでいまして... 正規表現の大切さを思い知りました。
bcaa

2019/05/13 10:45

確かにphpの基礎が圧倒的に不足していますね。アドバイスを素直に聞いて基礎をやるべきだとおもいますわ。
toll_tree

2019/05/13 10:58

「基礎」というのは、どの部分のことでしょうか?
m.ts10806

2019/05/13 12:12 編集

「Laravel固有の問題か、LaravelのMiddleware固有の問題か、PHP本体の問題かが区別つくようになること」と回答にも書いてあります。 根拠もなくただなんとなく「Laravelの問題だ!」と決めつけてる時点で「基礎は学習しました」という言葉の信憑性はほぼ0になります。 基礎とは「なんとなくの部分が明確に理解できている」「きちんと分別がついて使い分けができる」「各機能の適切な使い方がイメージできる」そのために「PHPマニュアルを活用できる」状態です。
yasutomi

2019/05/13 12:53

正規表現の(.*)が理解できていないのに「PHP基礎は学習した」というのは さすがに無理があると思ったのですが もしかしたら質問者は正規表現について記載されていない ドットインストールのPHP入門やPHPの絵本などで 基礎を学んだのかもしれません。 https://dotinstall.com/lessons/basic_php_v2 まあ、preg_replaceでググって 正規表現を自身で調べてない時点で 弁解の余地はないですが。
toll_tree

2019/05/13 12:56

根拠が何もなくというか、laravelを学習している際に、質問本文のコードが出てきたので、laravelの問題と思っただけです。
yasutomi

2019/05/13 13:01

こんきょ【根拠】 ① 判断・推論などを成り立たせるよりどころ。行動などの正当性を支える事実。 「立論の-を明示する」 「上に説く所の理に-し/民約論 徳」 https://kotobank.jp/word/%E6%A0%B9%E6%8B%A0-505886
toll_tree

2019/05/13 13:11

>>、preg_replaceでググって 正規表現を自身で調べてない そもそも、正規表現の問題とは思っていなかったので、調べなかったです。
bcaa

2019/05/13 13:20

基礎については(素人にはやや厳しめだけど)他の人が答えてくてれるからおいておくとして 正規表現の問題と思ってなかったから調べなかったとかじゃなくてさ、正規表現の問題かlaravelの問題か切り分けが出来てないからこそまずは正規表現について調べて、正規表現の問題じゃないと分かったら次にlaravelを調べればいいだけじゃない?順番は逆でもいいけど 問題が起きた時にはひとつひとつチェックして潰していくもんですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問