我如何從輸出中選擇前10個單詞?如何選擇一個句子的前10個單詞?
回答
implode(' ', array_slice(explode(' ', $sentence), 0, 10));
要添加其他斷字像逗號和破折號支持,preg_match
給出了一個快速的方法,並不需要分割字符串:
function get_words($sentence, $count = 10) {
preg_match("/(?:\w+(?:\W+|$)){0,$count}/", $sentence, $matches);
return $matches[0];
}
由於Pebbl提到,PHP不能很好地處理UTF-8或Unicode,所以如果這是一個問題,那麼你可以用\w
代替[^\s,\.;\?\!]
和\W
爲[\s,\.;\?\!]
。
http://snipplr.com/view/8480/a-php-function-to-return-the-first-n-words-from-a-string/
function shorten_string($string, $wordsreturned)
{
$retval = $string; // Just in case of a problem
$array = explode(" ", $string);
/* Already short enough, return the whole thing*/
if (count($array)<=$wordsreturned)
{
$retval = $string;
}
/* Need to chop of some words*/
else
{
array_splice($array, $wordsreturned);
$retval = implode(" ", $array)." ...";
}
return $retval;
}
如果在句子結構中存在意外的字符而不是空格,或者如果該句子包含多個連接空格,則簡單地在空格上分割將會不正確地運行。
無論您在單詞之間使用什麼樣的「空間」,都可以使用以下版本,並且可以輕鬆擴展以處理其他字符......它目前支持任何空格字符,還有。 ; ? !
function get_snippet($str, $wordCount = 10) {
return implode(
'',
array_slice(
preg_split(
'/([\s,\.;\?\!]+)/',
$str,
$wordCount*2+1,
PREG_SPLIT_DELIM_CAPTURE
),
0,
$wordCount*2-1
)
);
}
正則表達式是完美的這個問題,因爲你可以很容易地使代碼那樣靈活或嚴格的,只要你喜歡。但是你必須小心。我專門找到了上述針對詞語—之間的差距,而不是單詞本身—,因爲要明確定義一個詞的含義是相當困難的。
取\w
字邊界或其倒數\W
。我很少依賴這些,主要是因爲—取決於您使用的軟件(如某些版本的PHP)— they don't always include UTF-8 or Unicode characters。
在正則表達式中,最好是具體的,在任何時候。這樣你的表情可以處理之類的東西下面,無論身在何處,他們呈現:
echo get_snippet('Это не те дроиды, которые вы ищете', 5);
/// outputs: Это не те дроиды, которые
避免分裂可能是值得的。然而,在性能方面。所以你可以使用凱利的更新方法,但\w
爲[^\s,\.;\?\!]+
和\W
爲[\s,\.;\?\!]+
。儘管我個人喜歡上面使用的分裂表達的簡單性,但它更易於閱讀並因此進行修改。但是,PHP函數的堆棧有點難看:)
+1爲什麼這是0票?這是比其他答案更好的解決方案。雖然,人們不應該在PHP中使用駱駝案例。 – 2012-09-20 20:27:49
@StephenSarcsamKamenar謝謝......並且好點,那天我一直在做太多javascripting :) – Pebbl 2012-10-13 10:23:22
我同意@ StephenSarcsamKamenar的問題!我想這裏有兩個很多的答案。提出問題以更新正確答案是一項責任。這對我來說是最好的:毫無疑問,+1! – JeanValjean 2012-12-05 08:34:31
這可能對你有所幫助。函數返回N號。也就是說
public function getNWordsFromString($text,$numberOfWords = 6)
{
if($text != null)
{
$textArray = explode(" ", $text);
if(count($textArray) > $numberOfWords)
{
return implode(" ",array_slice($textArray, 0, $numberOfWords))."...";
}
return $text;
}
return "";
}
}
的,這是完全是我們正在尋找 只是削減ñ粘貼到你的程序並運行。
function shorten_string($string, $wordsreturned)
/* Returns the first $wordsreturned out of $string. If string
contains fewer words than $wordsreturned, the entire string
is returned.
*/
{
$retval = $string; // Just in case of a problem
$array = explode(" ", $string);
if (count($array)<=$wordsreturned)
/* Already short enough, return the whole thing
*/
{
$retval = $string;
}
else
/* Need to chop of some words
*/
{
array_splice($array, $wordsreturned);
$retval = implode(" ", $array)." ...";
}
return $retval;
}
並調用你的代碼塊的功能就像
$data_itr = shorten_string($Itinerary,25);
我建議使用str_word_count
:
<?php
$str = "Lorem ipsum dolor sit amet,
consectetur adipiscing elit";
print_r(str_word_count($str, 1));
?>
上面的例子將輸出:
Array
(
[0] => Lorem
[1] => ipsum
[2] => dolor
[3] => sit
[4] => amet
[5] => consectetur
[6] => adipiscing
[7] => elit
)
用途一個循環來獲取你想要的單詞。
我做這種方式:
function trim_by_words($string, $word_count = 10) {
$string = explode(' ', $string);
if (empty($string) == false) {
$string = array_chunk($string, $word_count);
$string = $string[0];
}
$string = implode(' ', $string);
return $string;
}
其UTF8兼容...
我不知道爲什麼這一切混亂的,當有一個內置的Wordpress功能:
<?= wp_trim_words(get_the_content(), 15, '...') ?>
回聲內容的前15個單詞(它在裏面工作一個常規循環)並添加省略號。
這可能對你有幫助。函數返回 no. of words
。
function num_of_word($text,$numb) {
$wordsArray = explode(" ", $text);
$parts = array_chunk($wordsArray, $numb);
$final = implode(" ", $parts[0]);
if(isset($parts[1]))
$final = $final." ...";
return $final;
return;
}
echo num_of_word($text, 10);
試試這個
$str = 'Lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris ornare luctus diam sit amet mollis.';
$arr = explode(" ", str_replace(",", ", ", $str));
for ($index = 0; $index < 10; $index++) {
echo $arr[$index]. " ";
}
我知道這是不是時間來回答,而是讓新來的人選擇自己的答案。
function get_first_num_of_words($string, $num_of_words)
{
$string = preg_replace('/\s+/', ' ', trim($string));
$words = explode(" ", $string); // an array
// if number of words you want to get is greater than number of words in the string
if ($num_of_words > count($words)) {
// then use number of words in the string
$num_of_words = count($words);
}
$new_string = "";
for ($i = 0; $i < $num_of_words; $i++) {
$new_string .= $words[$i] . " ";
}
return trim($new_string);
}
使用方法如下:
echo get_first_num_of_words("Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid, illo?", 5);
輸出:Lorem ipsum dolor sit amet
這個功能也可以非常好地Unicode字符像阿拉伯字符。
echo get_first_num_of_words("نموذج لنص عربي الغرض منه توضيح كيف يمكن استخلاص أول عدد معين من الكلمات الموجودة فى نص معين.", 100);
輸出:نموذج لنص عربي الغرض منه توضيح كيف يمكن استخلاص أول عدد معين من الكلمات الموجودة فى نص معين.
要選擇給定文本的10個字,你可以下面的函數實現:使用
function first_words($text, $count=10)
{
$words = explode(' ', $text);
$result = '';
for ($i = 0; $i < $count && isset($words[$i]); $i++) {
$result .= $words[$i];
}
return $result;
}
這很容易做到str_word_count()
$first10words = implode(' ', array_slice(str_word_count($sentence,1), 0, 10));
[鏈接到文檔](http://php.net/manual/en/function.str-word-count.php) – 2017-05-10 17:50:58
- 1. 保留前兩個單詞和句子的最後一個單詞
- 2. 如何添加(追加)一個單詞到同一個句子,每個單詞使用一個按鈕(單擊)
- 3. 如何獲取此代碼從每個數組中選擇一個隨機單詞來打印一個句子?
- 4. 打印每個單詞的第一個字母一個句子
- 5. 如何迭代C++中的一個句子的單詞?
- 6. 使用grep檢查一個句子是否少於10個單詞
- 7. 如何將一個句子轉換爲一組單詞?
- 8. 如何提取句子的最後一個單詞
- 9. 如何找到句子中有'w'的第一個單詞
- 10. 如何匹配句子中的最後一個單詞?
- 11. Python如何打印一個單詞所在的句子?
- 12. 如何從當前單詞到句子末尾的句子(。)段落中選擇文本
- 13. 選擇字符串上每個單詞的前2個字符
- 14. 在句子的某個單詞的任一側獲取n個單詞
- 15. 如何使用jQuery獲取一個句子的最後一個單詞?
- 16. 如何計算一個單詞在一個句子中出現的次數? (Python)
- 17. 如何找到一個單詞之前沒有另一個特定的單詞?
- 18. 如何找到一個句子的第一個單詞只有三個不同的選項
- 19. 如何選擇一個單選按鈕後選擇一個gridview
- 20. Javascript在textarea中選擇一個句子
- 21. 從madlib中選擇一個句子python
- 22. Word VBA選擇一個句子
- 23. 用where子句選擇一個列Eloquent
- 24. 正則表達式 - 如何選擇一個有' - '的單詞?
- 25. T SQL選擇前10個循環
- 26. 選擇前10個最大值
- 27. 爲每個排名選擇前10位
- 28. 如何爲輸入的句子中的每個單詞分配一個數字?
- 29. 獲取句子中每個單詞的第一個字母?
- 30. 找到兩個句子之間匹配的第一個單詞
你可能找到['s($ str) - > words(10)'](https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d4 3adaa899642c1cce047e076dc/src/Str.php#L363)很有幫助,在[這個獨立的庫](https://github.com/delight-im/PHP-Str)中找到。 – caw 2016-07-27 00:43:50