-3

PhoneNumbers の RegEx にいくつかの問題があります。これまでのところ動作しますが、「//」をスペースに置き換える方法がわかりません。

入力: 0()()()111 1-11* // *1111

予定:: +49 111 111 1111

得た: +49 111 1111111

$pattern = array(
            '/[^0-9\+\.\-\(\) ]/',   // Cut all characters that are not allowed
            '/^00/',                 // Start with 00 ist changed to +
            '/^(0)(\d)/',            // Start with 0[1-9] ist changed to +49 [0-9]
            '/[\.\-\(\)]/',          // Change allowed characters to ' '
            '/\s[\s]+/',             // Change grouped spaces too one
            '/((\+49 )(0))(.*)/'
        );

$change = array('', '+', '+49 $2', ' ', ' ', '$2$4');
$value = preg_replace($pattern, $change, $value);

以下に文字を追加:

 '/[\.\-\(\)]/',          // Change allowed characters to ' '

動作しません。申し訳ありませんが、正規表現に関する私の知識は限られています。

4

2 に答える 2

1

これを試してみてください。私はちょうどそれをテストして動作しました。最初に二重スラッシュを置き換え、次に許可されていない文字を置き換えます。

$pattern = array(
            '/[\/]{2}/',             // Replacing //
            '/[^0-9\+\.\-\(\) ]/',   // Cut all characters that are not allowed
            '/^00/',                 // Start with 00 ist changed to +
            '/^(0)(\d)/',            // Start with 0[1-9] ist changed to +49 [0-9]
            '/[\.\-\(\)]/',          // Change allowed characters to ' '
            '/\s[\s]+/',             // Change grouped spaces too one
            '/((\+49 )(0))(.*)/'
        );

$change = array(' ', '', '+', '+49 $2', ' ', ' ', '$2$4');
$value = preg_replace($pattern, $change, $value);
于 2013-07-03T07:08:36.250 に答える