0

私を怒らせている私の問題を見て、新鮮な目が欲しいです。どんな助けでも大歓迎です。

わずか 2 行の PHP コードから、ユーザーが電話番号の先頭に入力した場合、最初の「44」を削除しようとしています。

    $telephone = '44789562356';
    $telephone = str_replace(' ','',$telephone);
    $telephone = str_replace('+44','0',$telephone);
if(strpos($telephone,"44")==0){
        $telephone = substr($telephone,2);
        $telephone = '0'.$telephone;
    }

すべての電話番号から '7' を削除するのはなぜですか?

4

1 に答える 1

0

コリンがコメントしたように、部分文字列が見つからない場合、および文字列の先頭にあり、真であり、偽である場合に返されるため===、戻り値で厳密な比較を使用する必要があります。strpos()false0false == 0false === 0

または、正規表現を使用して、次のように文字列の先頭のみで一致を指定することもできます。

if( preg_match('/^44/', $telephone) ) { ... }

またはそれを交換してください:

preg_replace('/^44/', '0', $telephone);

コードは次のように簡略化できます。

$telephone = '+44-789 56-2356 ask for larry';
$telephone = preg_replace('/[^0-9]/','',$telephone); // remove all non-numeric characters
$telephone = preg_replace('/^44/','0',$telephone);
echo $telephone;
// output: 0789562356
于 2013-03-07T16:50:16.150 に答える