PHP:strrposを使用して単語の抜粋を切り取ります

htmlコード

PHPを使用していて、ソーステキストからの抜粋のみを表示し、それをいくつかの文字で切り取りたい場合、文字列の途中で実行すると、抜粋が見苦しく見える可能性があります。 ASPとASP.NETでこれを行う関数を作成する必要がありました。この関数は、基本的に最後の文字から戻って最後のスペースを見つけ、そこで切り取ります。 ちょっと厄介で少しやり過ぎです。 あなたは実際に私の家でこれが実際に動いているのを見ることができます ページ ここでは、最初の500文字のみを提供します。

今日はPHPで同じ関数を開発する準備ができていましたが、(いつものように)PHPにはすでにそれを実行する関数があることがわかりました。 strrpos.

古いコードは、最初の文字から必要な最大文字数($ maxchars)までの部分文字列($ content)を取ります。

$ content = substr($ content、0、$ maxchars); エコー$ content;

新しいコード:

$ content = substr($ content、0、$ maxchars); $ pos = strrpos($ content、 ""); if($ 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){

    if(strlen($ content)> $ maxchars){

    $ content = substr($ content、0、$ maxchars);
    $ pos = strrpos($ content、 "");

    if($ pos> 0){
    $ content = substr($ content、0、$ pos);
    }

    $ contentを返します。 "…";

    場合} else {

    $ contentを返します。

    }

    }

  6. 6

    最後の文字が終止符、感嘆符、疑問符などの句読文字である場合はどうなりますか? 残念ながら、このコードは句読文字の前の単語全体を消去します。  

    もう少し頑強なものを書いたほうがいいと思います。

  7. 7

どう思いますか?

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.