PHP:使用strrpos摘录单词

HTML代码

如果您使用的是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函数可以做到这一点……我找不到一个。

7条评论

  1. 1
  2. 2
  3. 3
  4. 4

    如果$ content最初比$ maxchars更短,那么编写的代码仍将从右向左查找一个空格,并切出最后一个单词。 您可以在$ content的末尾连接一个空格,或者执行if(strlen()…)

  5. 5

    这似乎是一个功能(解决前面的评论):

    函数showexcerpt($ content,$ maxchars){

    如果(strlen($ content)> $ maxchars){

    $ content = substr($ content,0,$ maxchars);
    $ pos = strrpos($ content,“”);

    如果($ pos> 0){
    $ content = substr($ content,0,$ pos);
    }

    返回$ content。 “…”;

    } {

    返回$ content;

    }

    }

  6. 6
  7. 7

你觉得呢?

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.