2010-05-26 47 views
10

獲得字符串的前5個單詞的最佳方法是什麼? 我怎麼能以這樣的方式,第一子具有原始字符串,第二個字符串的第一個5個字分割字符串成兩個構成原始字符串PHP獲取字符串的前5個單詞的最佳方法是什麼?

+0

如果您確實需要* words *,請嘗試['s($ str) - > words(5)'](https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899d2c1cce047e076dc/ src/Str.php#L363),在[這個獨立的庫](https://github.com/delight-im/PHP-Str)中找到。 – caw 2016-07-27 03:26:44

回答

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

explode中斷原有的其餘部分字符串轉換爲單詞數組,array_splice可讓您獲取這些單詞的某些範圍,然後implode將範圍重新組合爲單個字符串。

+7

使用'explode(「」,$ inputstring,6)'可以在不需要時保存爆炸。 – salathe 2010-05-26 19:16:38

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

'str_split'不會做你認爲它做的事。 – Amber 2010-05-26 18:30:12

+1

與@Amber商定,'str_split'轉換的第一個參數的陣列,[它不具有像一個在這裏指示的簽名(http://php.net/manual/en/function.str-split。 php) – 2010-05-26 18:32:23

+0

謝謝。我通常會把'str_split'和'explode'混合起來。修正了小小的疏漏。 – Kenaniah 2010-05-26 18:32:27

15

以下內容強烈依賴於您定義的單詞,但它是向另一個方向點頭,遠離純文本explode -ing。

$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]); 
+0

後者簡潔。 +1 – 2014-08-11 19:46:38

+0

這個爲我工作,謝謝 – 2015-01-22 12:47:39

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

注意:這裏在最後你可以看到0,10它會打印從開始字到第10個字,所以你可以修復,因爲你想從字開始到字的總數。

+0

不足以爆炸空間。 – 4EACH 2017-02-19 20:52:43

相關問題