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

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

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

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

Q&A

解決済

2回答

654閲覧

preg_match の意味

Inu1011

総合スコア7

PHP

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

0グッド

0クリップ

投稿2020/04/15 16:24

編集2020/04/15 17:18

if(!preg_match('/\A[a-zA-Z0-9]+\z/', $_POST['password']))
これの意味を教えてください。具体的に教えてください
[a-zA-Z0-9]の一文字も含まなかったらという意味になるんじゃないんですか?
なぜこれで英数文字のみという意味になるのでしょうか

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

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

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

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

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

kei344

2020/04/15 16:39

(質問文は編集できます)質問の仕方を公式のガイドに沿って改善してください。 【質問するときのヒント|teratail(テラテイル)】 https://teratail.com/help/question-tips
Inu1011

2020/04/15 17:12

[a-zA-Z0-9]の一文字も含まなかったらという意味になるんじゃないんですか?
kei344

2020/04/15 17:47

「英数文字のみという意味になる」の出典を提示してください。また、コードの断片ではなく処理全体を提示してください。
guest

回答2

0

[a-zA-Z0-9]の一文字も含まなかったらという意味になるんじゃないんですか?

なぜそんな解釈になったのか、全く理解できないので、まずはドキュメントを読んだ上で、不明点を明確にしてみてください。多分、なにか勘違いしてます。

preg_match で使用する正規表現は、PCRE(Perl 互換)と呼ばれるもので、公式でかなりのサンプルとともに説明があります。

参考)
正規表現のデバッグは、php のデバッグ環境ではできません。
https://regex101.com/ が非常に便利です。

投稿2020/04/15 20:48

編集2020/04/15 22:10
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Inu1011

2020/04/16 05:55

もう解決しました、ありがとうございました!
guest

0

ベストアンサー

PHp

1 2if(!preg_match('/\A[a-zA-Z0-9]+\z/', $_POST['password'])){ 3 4} 5

まず。正規表現における[]はカッコ内の任意の一字をあらわします。なので、[a-zA-Z0-9]aからz か AからZ か 0から9 の一字という意味になります。
その次についている+は直前の1回以上の繰り返しを意味します。
\A \zは初めから終わりを示します。
よってこれらを合わせて、初めから終わりaからz か AからZ か 0から9 の一字1回以上の繰り返しとなります。
もし、この条件が、POSTされたpasswordと一致すれば、trueを返すわけです。
しかし、preg_matchの前に!がついているので否定となり、これらが一致しなかった場合にif内の処理を行うことになります。
ここら辺は、言葉で説明すると非常に難しいので、正規表現チェッカーなどを用いることをお勧めします。

投稿2020/04/15 17:54

kyoya0819

総合スコア10429

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

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

kyoya0819

2020/04/16 03:00

補足ありがとうございます。
Inu1011

2020/04/16 05:55

わかりやすい説明ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問