
新兴技术
PHP:使用strrpos摘录单词
如果您使用的是PHP,并且只想显示源文本的摘录,然后将其截断为多个字符,那么如果摘录在字符串中间,则摘录可能会很难看。 我必须编写一个函数在ASP和ASP.NET中执行此操作,该函数基本上从最后一个字符开始循环返回以找到最后一个空格,并在此处切断它。 有点讨厌和一点点矫kill过正。 您实际上可以在我的家里看到它 有关详细信息,请查看此页面。 我只提供前500个字符。
今天,我已经准备好使用PHP开发相同的功能,但是(通常)发现PHP已经具有可以执行此功能的功能, Strrpos.
旧代码将从第一个字符到所需的最大字符数($ maxchars)包含一个子字符串($ content):
$ content = substr($ content,0,$ maxchars); echo $ content;
新代码:
$ content = substr($ content,0,$ maxchars); $ pos = strrpos($ content,“”); 如果($ pos> 0){$ content = substr($ content,0,$ pos); } echo $ content;
因此,新代码首先会在您要查找的字符数限制处切断内容。 但是,下一步是在内容中查找最后一个空格(“”)。 $ pos会变成那个位置。 现在,我简单地通过询问$ pos> 0来确保内容中确实有一个空格。 如果没有,它将按照我要求的字符数切断内容。 如果有任何空间,它将在该空间优雅地切断我的内容。
这是结合使用最大字符数和截断单词的一种好方法。 希望你喜欢!
而且我敢肯定,我会确定是否有一个ASP.NET函数可以做到这一点……我找不到一个。
道格,在C#中,您可以使用String.LastIndexOf方法执行strrpos在PHP中所做的事情。
我知道那会发生! 🙂
谢谢,阿比吉特!
优秀! 正是我想要的。 谢谢。
如果 $content 最初比 $maxchars 短,则编写的代码仍会从右到左查找空格并删除最后一个单词。 您可以在 $content 的末尾连接一个空格,或者执行 if (strlen()...)
这似乎是一个函数(解决前面的评论):
函数 showexcerpt($content, $maxchars) {
if (strlen($content) > $maxchars) {
$content= substr($content, 0, $maxchars);
$pos = strrpos($content, " ");
如果 ($pos>0) {
$content = substr($content, 0, $pos);
}
返回 $ 内容。 “……”;
} {
返回$ content;
}
}
如果我们的最后一个字符是像句号、感叹号或问号这样的标点符号怎么办? 不幸的是,此代码将擦除所述标点符号之前的整个单词。
我认为你最好写一些更健壮的东西。
好主意!