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

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

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

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

正規表現

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

Q&A

解決済

2回答

1338閲覧

PHPの正規表現でテキスト内から複数フォーマットの電話番号を抽出する方法があれば教えて下さい

shoboin

総合スコア8

PHP

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

正規表現

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

0グッド

0クリップ

投稿2021/04/20 03:02

正規表現素人です。
抽出したいパターンは、半角・全角数字と記号(ハイフンやカッコの全角半角)の組み合わせです。
例)
・09012345678
・03-1234-5678
・0000-00-0000
・090-1234-5678
・09012345678
・090-1234-5678
・090-1234-5678
・0000(00)0000
・000(000)0000

よろしくお願い致します。

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

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

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

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

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

int32_t

2021/04/20 03:13

正規表現で十分可能なので、まずは自分でコードを書いてみてください。
shoboin

2021/04/20 03:24

ご指摘の通り、今一度調べてみます。 ありがとうございます。
guest

回答2

0

自己解決

一応解決しましたが、もっと良い書き方、スマートな記述などあればご教示いただければ幸いです。

PHP

1$telArray = [ 2 'あああ09012345678いいい', 3 'あああ03-1234-5678いいい', 4 'あああ0000-00-0000いいい', 5 'あああ090-1234-5678いいい', 6 'あああ09012345678いいい', 7 'あああ090-1234-5678いいい', 8 'あああ090-1234-5678いいい', 9 'あああ0000(00)0000いいい', 10 'あああ000(000)0000いいい', 11 'あああ000 000 0000いいい', 12 'あああ000 000 0000いいい', 13 'あああ090【1234】5678いいい', 14 ]; 15 16 $telArrayNew =[]; 17 foreach ($telArray as $tel) { 18 $telArrayNew[] = preg_replace('/[0-90-9]{2,4}[()【】()--\s\S  ][0-90-9]{2,4}[()【】()--\s\S  ][0-90-9]{2,4}/u', "", $tel); 19 }

投稿2021/04/20 04:47

shoboin

総合スコア8

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

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

shoboin

2021/04/21 09:42

これだと数字の6桁以上の数字も対象になってしまいました・・・ [()【】()--\s\S  ]の「\s\S」はコロンや~も判断してしまう?のでしょうか?
guest

0

たとえば09012345678は「+819012345678」とも表現されたりします
電話番号は類推するのは不確実なのでおすすめできません。
どうしてもなら「()-」などを取り除いて数字の羅列が10~11文字(これも不確実)
のものを電話番号とみなす手はあるでしょう。

投稿2021/04/20 03:18

yambejp

総合スコア115034

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

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

yambejp

2021/04/20 03:18

00-1234(5678とかおかしなものも拾いますけどね
shoboin

2021/04/20 03:25

ご回答頂きありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問