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

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

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

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

Q&A

解決済

3回答

951閲覧

PHPで郵便番号をチェックする方法

gomes_2222

総合スコア90

PHP

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

0グッド

0クリップ

投稿2020/02/10 13:32

編集2020/02/10 13:53

PHPで入力フォームに入力された郵便番号をチェックすることを考えてます。
で、知人の詳しい人にも教えてもらい、以下の構文をおしえてもらいました。

しかし、これで郵便番号を適当な数字を入力しても、毎回プログラムにfalseとされてしまいます。下記プログラムだと正しく数字3桁、ハイフン、数字4桁しても「失敗」と表示されます。
なぜでしょうか。
なんども確認してこれであっているかと思ったのですが・・・
「;」や「()」の忘れなどのケアレスミスを確認しました。
また、今回はフォーム画面の郵便番号をチェックするためということで、コードを打ちました
if以下の条件文も、前後の「/\」や「/A」で数字で始まっていることを確認し、
「d[3]」で数字が3つ続くことを確認できます。
そのあと、「[-]」でハイフンのあることを確認し、「d[4]\z」で数字以外の余計な文字がないかどうか確認ができるはずなんですが・・
「mb_convert_kana」で全角か半角かも関係なく、半角に変換できているかと思います。
どこがダメで思う通りにいかないのかがわかりません・・・
下記コード例ならtrueの結果が得られるかと思ったのですが、なぜfalse何でしょうか

php

1<?php 2 $num = '123-4567'; 3 $num = mb_convert_kana($num, 'a', 'UTF-8'); 4 if (preg_match("/\A\d[3][-]\d[4]\z/", $num)) { 5 print('番号は' . $num); 6 } else { 7 print('失敗'); 8} 9?>

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

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

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

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

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

m.ts10806

2020/02/10 13:37

>なんども確認してこれであっているかと思ったのですが・・・ どこをどう確認して「合ってる」と結論づけたのでしょうか。 (間違っているのに、という指摘ではなく、その根拠をきちんと聞きたいだけです)
guest

回答3

0

ベストアンサー

PHP

1/\A\d{3}-\d{4}\z/

投稿2020/02/10 13:57

編集2020/02/10 13:57
kei344

総合スコア69366

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

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

gomes_2222

2020/02/10 15:46

簡潔な回答をありがとうございました。 精進します
guest

0

「なぜ?」という前に、マニュアルを確認してみましたか?
マニュアルを確認しないで、そしてマニュアルを読めば間違っていることが分かるのに、「なぜ?」と問い続けても詮無いことだと思います。

細かくは見てませんが、一瞥で「これはおかしいでしょう……」
と思って直したのが以下です。

PHP

1<?php 2 $num = '123-4567'; 3 $num = mb_convert_kana($num, 'a', 'UTF-8'); 4 if (preg_match("/\A\d{3}[-]\d{4}\z/", $num)) { 5 print('番号は' . $num); 6 } else { 7 print('失敗'); 8 }

とりあえず、上記の実行結果は

番号は123-4567

です。

以下を確認してみてください。

繰り返し

投稿2020/02/10 14:01

takepan1973

総合スコア821

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

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

0

正規表現の書き方が違います。

/\A\d{3}[-]\d{4}\z/

投稿2020/02/10 13:58

kyoya0819

総合スコア10429

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問