可以说我有以下句子:
A quick brown fox jumped over a lazy dog.
但是我有一个限制,那句话只允许25个字符.这可能会让我有类似的东西:
A quick brown fox jum
然而,这句话没有任何语法意义,所以我宁愿找到我们可以允许的最后一个词,同时保持25个字符限制.这会给我们这样的东西:
A quick brown fox
这将低于25个字符限制,但它具有更多的语法意义.即
单词没有被分解,我们在保持极限的同时拥有最多可理解单词.
如何编写一个将接受字符串的函数和一个char限制(如25),如果字符串超出限制,则返回具有最大字数的字符串?
使用正则表达式很容易:
function first_few_words($text,$limit) { // grab one extra letter - it might be a space $text = substr($text,$limit + 1); // take off non-word characters + part of word at end $text = preg_replace('/[^a-z0-9_\-]+[a-z0-9_\-]*\z/i','',$text); return $text; } echo first_few_words("The quick brown fox jumps over the lazy dog",25);
此实现的一些额外功能:
>也可以在换行符和制表符处拆分单词.
>保存一个以字符25结尾的额外单词.
编辑:更改正则表达式,以便只将字母,数字,“_”和“ – ”视为单词字符.