2013-10-02 2 views
0

Я пробовал все, но ответ, вероятно, очень прост. Переменная $data['phone'] - это, например, 954a23589, и я хочу, чтобы только цифры так плохо их получали.Получение массива вместо строки

$phoneW = strval($data['phone']); 
preg_match_all('!\d+!', $phoneW, $matches); 
print_r(array_values($matches)); echo '<br /><br />'; 

Выход

Array ([0] => Array ([0] => 954 [1] => 23589)) 

Я хочу, чтобы каждый из них вместе в виде строки или междунар (не имеет значения).

+1

print_r (implode ('', array_values ​​($ matches))); – Kuro

ответ

7

Это, наверное, проще заменить все нецифры с пустой строкой:

$number = preg_replace('/\D+/', '', $phoneW); 
+0

..и затем используйте 'intval ($ string)' или '(int) $ string', чтобы при необходимости применить его к целому числу. – h2ooooooo

+0

Большое спасибо: D – user2837935

+0

@ h2ooooooo: вы не можете передавать номера телефонов в int, так как номера телефонов обычно являются длинными числами и, вероятно, будут больше, чем 'PHP_INT_MAX'. –

0

и я хочу только цифры так плохо получить их

Почему бы не заменить все, что не является цифра с «ничего»?

echo preg_replace('#[^\d]#', '', '954a23589'); 
Смежные вопросы