Мне нужно разбить строку на куски 2,2,3,3 символов и смог сделать это в Perl, используя распаковку:
unpack("A2A2A3A3", 'thisisloremipsum');
Однако такая же функция не работает в PHP, она дает этот результат:
Array ( [A2A3A3] => th )
Как это сделать, используя распаковку? Я не хочу писать для него функцию, это должно быть возможно с распаковкой, но как?
Заранее спасибо,
Цитирование страницы руководства для unpack
:
unpack()
работает несколько иначе, чем Perl, поскольку распакованные данные хранятся в ассоциативном массиве.
Для этого вы должны называть разные коды формата и разделять их косой чертой/
.
Это означает, что, используя что-то вроде этого:
$a = unpack("A2first/A2second/A3third/A3fourth", 'thisisloremipsum'); var_dump($a);
Вы получите следующий результат:
array 'first' => string 'th' (length=2) 'second' => string 'is' (length=2) 'third' => string 'isl' (length=3) 'fourth' => string 'ore' (length=3)
Я никогда не использовал эту функцию, но, согласно документации, символ A
означает «SPACE-padded string». Поэтому я бы рискнул предположить, что он принимает только первые два символа первого слова.
Вы пробовали unpack("A2A2A3A3", 'this is lorem ipsum');
?