PHP 如何获取字符串的前5个单词?

20

如何获得字符串的前5个单词?如何将字符串拆分为两部分,使第一个子字符串包含原始字符串的前5个单词,而第二个子字符串包含原始字符串的其余部分。


如果你真的只想要 单词,可以尝试使用s($str)->words(5),此函数可在这个独立库中找到。 - caw
4个回答

51
$pieces = explode(" ", $inputstring);
$first_part = implode(" ", array_splice($pieces, 0, 5));
$other_part = implode(" ", array_splice($pieces, 5));

explode函数可以将原始字符串拆分为一个单词数组,array_splice函数可以获取这些单词的特定范围,然后implode函数将这些范围重新组合成单个字符串。


8
当你不需要拆分字符串时,可以使用explode(" ", $inputstring, 6)来避免不必要的拆分。 - salathe
1
我会将$other_part = implode(" ", array_splice($pieces, 5));修改为$other_part = implode(" ", array_splice($pieces, 0));,至少在PHP 7中。 - Jorge Anzola

20

以下内容严重取决于您如何定义一个单词,但这是对另一个方向的认可,远离简单的explode

$phrase = "All the ancient classic fairy tales have always been scary and dark.";
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 5));

提供:

所有古典童话故事


另一个选择,既然每个人都喜欢正则表达式,可以尝试这样做:

preg_match('/^(?>\S+\s*){1,5}/', $phrase, $match);
echo rtrim($match[0]);

5
<?php
$words = explode(" ", $string);
$first = join(" ", array_slice($words, 0, 5));
$rest = join(" ", array_slice($words, 5));

2
str_split并不是你认为的那样。 - Amber
1
同意 @Amber 的观点,str_split 函数将第一个参数转换为数组,它没有像此处所示的签名 - Daniel DiPaolo
谢谢。我经常把 str_splitexplode 搞混了,纠正了这个小错误。 - Kenaniah

0
implode(' ', array_slice(explode(' ', $contents), 0, 5));

注意:在这里,你可以看到0、10,它将从第一个单词打印到第十个单词,因此你可以根据需要从单词开始修复到总单词数。


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