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?>
回答3件
あなたの回答
tips
プレビュー