【问题标题】:Getting first two words from string in php [closed]从php中的字符串获取前两个单词[关闭]
【发布时间】:2012-11-07 05:20:20
【问题描述】:

我有这样的字符串:

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

我想变成这样:

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

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

【问题讨论】:

标签: php string


【解决方案1】:

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

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

如果您在单词分隔符方面需要更大的灵活性,您可以使用preg_split() 执行类似的操作

$message = preg_split('/[\s,]+/', $message, 3)

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

【讨论】:

【解决方案2】:

您可以使用以下功能。

// 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 = "你好,你好吗?"; $allwords = explode(" ", $words); $length = count($allwords); for ($i=0; $i "; }
【解决方案3】:

如果 words 只是由连续空格分隔的前两个块,您可以这样做...

$words = preg_split("/\s+/", $str);

如果您想要前两个,您可以使用preg_split() 的限制参数(感谢Phil)。

【讨论】:

  • preg_split() 也有一个限制 arg 你知道 ;)
  • @Phil 我越来越懒了... :)
【解决方案4】:

查看sscanf,请务必阅读用户提交的 cmets。您可以在 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?"
    }
*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多