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

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

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

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

2034閲覧

PHP 正規表現

marimokomokmOk

総合スコア52

PHP

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2017/02/15 08:08

編集2017/02/15 09:23

php

1$pattern = '/^.*[0-90-9]/'; 2if(! preg_match ( $pattern, $_POST ['phoneLeft'] ) && ! strlen ( $_POST ['phoneLeft'] ) == 0) || (! preg_match ( $pattern, $_POST ['phoneMiddle'] ) && ! strlen ( $_POST ['phoneMiddle'] ) == 0) ||(! preg_match ( $pattern, $_POST ['phoneRight'] ) && ! strlen ( $_POST ['phoneRight'] ) == 0)){ 3 $err['phone'] = '電話番号は数字で入力してください。'; 4}

この行で見つかった複数の注釈:
- 2 個の変更 行
- 構文エラー,
unexpected ')'
- 構文エラー,
unexpected '||'

このようなエラーがでてしまいます。
何故でしょうか。

php

1```php 2 <?php 3 $vPhoneLeft = isset($_SESSION['phoneLeft']) ? $_SESSION['phoneLeft'] : ''; 4 $vPhoneMiddle = isset($_SESSION['phoneMiddle']) ? $_SESSION['phoneMiddle'] : ''; 5 $vPhoneRight = isset($_SESSION['phoneRight']) ? $_SESSION['phoneRight'] : ''; 6 $vPhone = isset($_SESSION['phone']) ? $_SESSION['phone'] : ''; 7 $errPhone = isset ( $err ['phone'] ) ? '<p class="content"><b><font color="red">' . $err ['phone'] . '</font></b>' : ''; 8 ?> 9 ■電話番号<span class="required">(上記で電話または両方を選択していた場合は必須)</span></br> <input 10 type="text" name="phoneLeft" value="<?php echo $vPhoneLeft;?>" 11 style="width: 50px;" maxlength="4" placeholder="00"><font 12 style="margin-left: 20px;">- <input type="text" name="phoneMiddle" 13 value="<?php echo $vPhoneMiddle;?>" style="width: 50px;" 14 maxlength="4" placeholder="0000"><font style="margin-left: 20px;">- 15<input type="text" name="phoneRight" 16 value="<?php echo $vPhoneRight;?>" style="width: 50px;" 17 maxlength="4" placeholder="0000"> 18 </p> 19 <?php echo $errPhone;?>

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

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

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

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

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

guest

回答3

0

ベストアンサー

$pattern = '/^[0-90-9]{1,}$/';
1回以上の数字だけ構成されているかチェックすればよいのでは?

追記

ハイフンも通したいのでしょうか?

$pattern = '/^[-0-90-9]{1,}$/'; $str="aaa-1111-1111"; print $str.(preg_match($pattern,$str)?"ok":"ng")."<br>"; $str="000-1111-1111"; print $str.(preg_match($pattern,$str)?"ok":"ng")."<br>"; $str="111-1234-1111"; print $str.(preg_match($pattern,$str)?"ok":"ng")."<br>";

「aaa-1111-1111」は通らないと思いますけど・・・
ただし「-------」などハイフンだけのものは通ります。
あとはどういったフォーマットを通したいか仕様をかんがえるしかありません

投稿2017/02/15 08:14

編集2017/02/15 09:02
yambejp

総合スコア114581

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

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

marimokomokmOk

2017/02/15 08:34

aaa-1111-1111が通ってしまいます 通らなくしたいです!
yambejp

2017/02/15 09:07

通りませんよ
marimokomokmOk

2017/02/15 09:07

```php <?php $vPhoneLeft = isset($_SESSION['phoneLeft']) ? $_SESSION['phoneLeft'] : ''; $vPhoneMiddle = isset($_SESSION['phoneMiddle']) ? $_SESSION['phoneMiddle'] : ''; $vPhoneRight = isset($_SESSION['phoneRight']) ? $_SESSION['phoneRight'] : ''; $vPhone = isset($_SESSION['phone']) ? $_SESSION['phone'] : ''; $errPhone = isset ( $err ['phone'] ) ? '<p class="content"><b><font color="red">' . $err ['phone'] . '</font></b>' : ''; ?> ■電話番号<span class="required">(上記で電話または両方を選択していた場合は必須)</span></br> <input type="text" name="phoneLeft" value="<?php echo $vPhoneLeft;?>" style="width: 50px;" maxlength="4" placeholder="00"><font style="margin-left: 20px;">- <input type="text" name="phoneMiddle" value="<?php echo $vPhoneMiddle;?>" style="width: 50px;" maxlength="4" placeholder="0000"><font style="margin-left: 20px;">- <input type="text" name="phoneRight" value="<?php echo $vPhoneRight;?>" style="width: 50px;" maxlength="4" placeholder="0000"> </p> <?php echo $errPhone;?> ```
yambejp

2017/02/15 09:14

ごめんなさい、できれば質問文に追記でソースを提示してください
yambejp

2017/02/15 09:28

ちなみに質問文にある「0-9」の箇所はハイフンが全角なので 範囲を表していません。注意したほうがよいでしょう
guest

0

括弧の対応があっていないので、おそらく、if(! のところは、 if((! ではないかと予想します。
加えて、/^.*[0-90-9]/ という正規表現は、数字が一文字であれば OK という意味になりますが、おそらくやりたいチェックとは異なるのではないかと思います。

投稿2017/02/15 08:22

ockeghem

総合スコア11701

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

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

marimokomokmOk

2017/02/15 09:23

ありがとうございます 解決できました!
guest

0

構文的には
if((
とする感じですかね?
長いんでちゃんと見てません。
()の数からの判断ですが。

投稿2017/02/15 08:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問