2011-07-13 4 views
1

Скажем, у меня есть следующие:Укладка переменной?

$var = "1234567890"; 

Я хочу, чтобы выглядеть следующим образом:

1234 567 890 

С первых четырех чисел, пробел, затем три числа, пространство, затем три числа.

Как это сделать?

Спасибо :)

+0

, как вы уверены в вашем входе? Если вы знаете, что это будет 10 цифр в 100% случаев, тогда вы можете использовать substr – zzzzBov

ответ

3

Вы можете использовать substr:

echo substr($var, 0, 4) . ' ' . substr($var, 4, 3) . ' ' . substr($var, 7, 3); 

Перед тем как сделать это, однако, вероятно, вы должны проверить, чтобы убедиться, что строка длины вы ожидаете, что это и имеет только числовые символы в нем, как так:

if (strlen($var) == 10 && is_numeric($var)) 
{ 
    // $var passed the check 
} 
else 
{ 
    // $var failed the check 
} 
1

Если предположить, что ваши данные является допустимым 10-значный номер:

echo substr($var, 0, 4) . ' ' . substr($var, 4, 3) . ' ' . substr($var, 7); 
1

Если вы не слишком частности, вы можете сделать:

$var = substr($var,0,4)." ".substr($var,4,3)." ".substr($var,7); 

Это нарушит его, как вы описали, и в качестве «бонуса» она будет возвращать неограниченное количество дополнительных символов на конец, если ввод больше ожидаемого. В качестве альтернативы вы можете сделать

$var = substr($var,0,4)." ".substr($var,4,3)." ".substr($var,7,3); 

, чтобы усечь цифры 10-го числа.

0

Вы также можете использовать регулярное выражение:

$var = preg_replace("@(\d{4})(\d{3})(\d{3})@", "\\1 \\2 \\3", $var); 

Или, если быть более точным:

$var = preg_replace("@^(\d{4})(\d{3})(\d{3})[email protected]", "\\1 \\2 \\3", $var); 
Смежные вопросы