私のPHPコードでは、電話番号からハイフンと括弧を削除することができます。
preg_replace('/\D+/', "", $cell);
また
preg_replace('/[ )(.-]/', "", $cell);
2つの質問:
(1)上記の形式のどれが、すべての不要な文字(、-、。、etc、および英字)を削除するのに最適です。
(2)ユーザーが入力した場合は、先頭の「1」(米国の国コード)も削除する必要があります
数字以外を削除するには多くの方法がありますが、最も理にかなった方法、つまり、数か月後にコードをもう一度見たときに最も直感的で理解しやすいと思われる方法を使用することをお勧めします。
あなたの\D
作品はうまくいきますが、追加すると、探して^1
いるリーディングも置き換えられます。1
preg_replace('/^1|\D/', "", $cell);
代わりに、ホワイトリスト アプローチを採用します。
/[^0-9]/
最初の式\D
も同じようにする必要があります。問題はありますか?2 番目の (ブラックリスト) アプローチでは確実に文字を見逃すため、それが機能する場合はそのままにしておきます。それか、リストが非常に大きくなる必要があります。
本当の答えではありませんが、言及する価値は間違いありません。国コードは+X
、または00X
(+
実際には単に のショートカットです00
) のいずれかであるため、先頭を削除すると、1
非常に醜い望ましくない動作につながる可能性があります。あちらでどのように機能するのか正確にはわかりませんが、ドイツでは、市内の電話番号は(理論的には)任意の番号で始めることができます(もちろん例外0
があります)。これは、不要な文字を削除する前に、先頭+
を慎重に置き換える必要があることを示しています (1)。00
$cell=preg_replace("/[^0-9]/","", $cell);
$cell=preg_replace("/^1/","", $cell);
やりますか