2012-03-25 17 views
0

未処理の電話番号レコード(31999999)を31-999-999(PHP)として印刷したいと思います。私はこれまでにそれをしていません。誰か助けてくれますか?電話番号出力

ありがとうございました

+3

入力は常にこのように見えますか?出力は常にこのように見えるでしょうか?これまでに何を試しましたか? –

+0

はい、そのようになります – user1286650

答えて

1
<?php 
$phone = 31999999; 

$formatted_phone = preg_replace("|\b(\d{2})(\d{3})(\d{3})\b|", "$1-$2-$3", $phone); 

echo $formatted_phone; 

これは私が思いついたものですが、より単純な方法かもしれませんが、これは最短のようです。しかし、正確な8桁の数字しか受け付けません。別のパターンが必要な場合は、入力を正確に指定する必要があります。

+0

フォーマットがうまくいかなかった場合は元の番号が表示されるので、これはクールです。 '^'と '$'を正規表現に追加するべきでしょうか? – Cam

+0

いいえ、次のように "これは文字列である12345678のようなものです"で動作するためです(また、複数の数値を1つの文字列に入れる場合は 'preg_replace_all() 'と置き換えますが、 8桁以上) –

0

これを行うには、部分文字列を操作する必要があります。幸いにも、PHPはsubstr()の機能を持っています。

+0

ありがとう、私はそれをチェックします。 – user1286650

2

数を文字列として格納されているかどうか、それは問題ではありませんので、我々は、PHPの弱い型システムを活用することができます。

$num = 112223333; 
echo substr($num,0,2) . "-" . substr($num, 2, 3) . "-" . substr($num, 4, 4); // 11-222-2333 

編集:以下のOliさんのコメントを1として、それは興味深いものですしながら、 $ numが文字列であるかどうかにかかわらず、このコードは$ numが文字列かintかに関係なく、$ numを文字列として格納するバグを避けるためです。

+0

さて、OPは電話番号を文字列以外のものとして保存していないことを願っています。 –

+0

@OliCharlesworth:それは良い点です。形式が示されていないので、完全性のために言及しました。私はそれに応じて答えを編集します。 – Cam

+0

答えをありがとう:) – user1286650