在php中获取字符串的前两个单词

11

我有一个像这样的字符串:

$message="AB 1234 Hello, how are you?
我想要像这样:
$message[0] = AB
$message[1] = 1234
$message[2] = Hello, how are you?

请不要建议使用 substr 函数,因为前两个单词的长度可能会有所变化,但它们之间将有空格。还有其他建议吗?


2
请再次检查问题和要求。 - fawad
我认为我的建议没有问题。它与下面提出的4个答案完全相同。 - user557846
重复的问题 https://stackoverflow.com/q/8456847/2943403 - mickmackusa
4个回答

37

使用带有限制的explode()函数,例如:

$message = explode(' ', $message, 3);

如果您需要更灵活地控制单词分隔符,可以使用preg_split()进行类似的操作。
$message = preg_split('/[\s,]+/', $message, 3)

演示 - http://codepad.org/1gLJEFIa


演示 - http://codepad.org/kZc2jGW9 - Phil

6
你可以使用以下函数。
// 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/zh/function.explode.php

$words = "你好,你怎么样?"; $allwords = explode(" ", $words);$lenght = count($allwords);for ($i=0; $i < $lenght; $i++) { echo $allwords[$i]."<br>"; } - TheLastCodeBender

3
如果“单词”只是由连续的空白字符分隔的前两个块,则可以执行以下操作...
$words = preg_split("/\s+/", $str);

如果你想要前两个结果,可以使用preg_split()的limit参数(感谢Phil)。

preg_split()函数也有一个限制参数哦 ;) - Phil
2
@Phil 我开始变得懒了... :) - alex

2

请查看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?"
    }
*/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接