2009-11-25 3 views
11

Я хотел бы получить строку, например 'sdasdasdsdkjsdkdjbskdbvksdbjsdkdjbskdbvksdbfksjdbfkdbfksdjbf', и разделить ее каждые шесть символов.Разделить строку на равные части с помощью PHP

Я не думаю, что взорваться или strtok будет работать для этого?

Любые идеи?

+0

Возможно, вам нужно указать, какой результат вы хотите. Массив? –

+0

Спасибо всем, кто ответил тоже! –

ответ

28

str_split был предназначен для всего этого.

$str = "sdasdasdsdkjsdkdjbskdbvksdbfksjdbfkdbfksdjbf"; 
$parts = str_split($str, 6); 
print_r($parts); 
+0

Блестящий, спасибо Марек! –

3

Вы хотите chunk_split()

+0

Я не уверен, что вы понимаете, что делает 'chunk_split()' do. * Он не разделяет строку на большее количество строк *, он просто разбивает строку внутри себя, в основном добавляя концы строк после каждого * chunk *, он используется для функциональности «максимальной длины строки» (например, тела электронной почты) :) –

0
$str = 'abcdefghijklmnopqrstuvwxyz'; 
$i = 0; $len = 6; $bits = array(); 
while($i < strlen($str)) { 
    $bits[] = substr($str, $i, $len); 
    $i += $len; 
} 

Edit: или использовать str_split как предложено (PHP имеет слишком много функций, встроенных в эфов!)

+2

И люди слишком счастливы изобретать колесо :) –

+1

Но колесо - чрезвычайно полезный инструмент, с которым нам будет трудно жить. Интересно, сколько накладных расходов приходится на эти тысячи редко используемых функций. Я натолкнулся на функцию date_sunrise() в руководстве на днях, давай, это смешно! – Rob

+1

Поскольку 6 строк плотного кода PHP меньше накладных расходов, чем одна функция, которая обрабатывает только несколько байтов в скомпилированной форме ...? :) Конечно, нет смысла включать функцию для ** все **, но и 'str_split', и' date_sunrise' достаточно сложны, чтобы оправдать ее, и (по-видимому) привыкают время от времени , 'date_sunrise' может быть не так часто, но когда вам это нужно, вы будете благодарны, что кто-то уже сделал эту работу. – deceze

1

Не самый чистый способ, но он работает.

<?php 
$MyString = 'asdfasdlkfjasdlkfjasdlkfjasldkfj'; 
$MyNewString; 
$n = 6; // How many you want before seperation 
$MyNewString = substr($MyString,0,$n); 
$i = $n; 
while ($i < strlen($MyString)) { 
     $MyNewString .= '-'; // Seperator Character 
     $MyNewString .= substr($MyString,$i,$n); 
     $i = $i + $n; 
} 
echo $MyNewString 
?> 
Смежные вопросы