У меня строка вроде:
$message="AB 1234 Hello, how are you?
Я хочу сделать следующее:
$message[0] = AB $message[1] = 1234 $message[2] = Hello, how are you?
Пожалуйста, не предлагайте функцию substr, потому что длина первых двух слов может отличаться, но между ними будут пробелы. Любое другое предложение?
Используйте explode()
с ограничением, например
$message = explode(' ', $message, 3);
Если вам нужна большая гибкость вокруг разделителя слов, вы можете сделать что-то подобное с preg_split()
$message = preg_split('/[\s,]+/', $message, 3)
Демо – http://codepad.org/1gLJEFIa
вы можете использовать следующую функцию.
// Example 1 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 output: //piece1 //piece2
Дополнительная информация: http://php.net/manual/en/function.explode.php
Если слова – это просто первые два куска, разделенные последовательными пробелами, вы можете сделать …
$words = preg_split("/\s+/", $str);
Если вы хотите использовать первые два, вы можете использовать preg_split()
для ограничения (спасибо Phil ).
Проверьте sscanf , обязательно прочитайте комментарии пользователей, которые тоже есть. Вы можете найти более подробное описание форматов, разрешенных на http://www.cplusplus.com/reference/clibrary/cstdio/scanf/ .
<?php $string = 'AB 1234 Hello, how are you?'; $array = sscanf($string, '%s %d %[^$]'); var_dump($array); /* array(3) { [0]=> string(2) "AB" [1]=> int(1234) [2]=> string(19) "Hello, how are you?" } */