Получение первых двух слов из строки в php [закрыто]

у меня есть строка типа:

$message="AB 1234 Hello, how are you?

Я хочу сделать так:

$message[0] = AB
$message[1] = 1234
$message[2] = Hello, how are you?

пожалуйста, не предлагайте функцию substr, потому что длина первых двух слов может отличаться, но между ними будут пробелы. Есть другие предложения?

4 ответов


использовать 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()предельный аргумент (спасибо Фил).


проверить использования 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?"
    }
*/