PHP: strrpos istifadə edərək sözünüzü çıxarın

html kodu

PHP ilə işləyirsinizsə və yalnız mənbə mətninizdən bir çıxarış göstərmək və bir neçə simvolda kəsmək istəyirsənsə, orta sətirlə işlənibsə çıxarış çirkin görünə bilər. Bunu ASP-də və ASP.NET-də yerinə yetirmək üçün bir funksiya yazmalıydım ki, bu da son boşluğu tapmaq və orada kəsmək üçün sonuncu simvoldan geri döndü. Bir növ xoşagəlməz və bir az həddini aşmaq. Bunu həqiqətən evimdə hərəkətdə görə bilərsiniz səhifə burada yalnız ilk 500 simvolu təqdim edirəm.

Bu gün PHP ilə eyni funksiyanı inkişaf etdirməyə tam hazır idim, ancaq (həmişəki kimi) PHP-nin onsuz da yerinə yetirən bir funksiyası olduğunu gördüm, strrpos.

Köhnə kod birinci simvoldan istədiyiniz maksimum simvol sayına ($ maxchars) qədər bir alt sətir ($ content) götürəcəkdir:

$ content = substr ($ content, 0, $ maxchars); echo $ content;

Yeni kod:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ məzmun, ""); əgər ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ content;

Beləliklə, yeni kod əvvəlcə aradığınız simvol limitindəki məzmunu kəsir. Bununla birlikdə, növbəti addım məzmunda son boşluğu (”“) axtarmaqdır. $ pos bu mövqedə qalacaq. İndi sadəcə $ pos> 0 olub olmadığını soruşaraq məzmunda həqiqətən bir boşluq olduğunu təmin edirəm. Olmazsa, məzmunu istədiyim simvol sayına görə kəsəcək. Hər hansı bir yer varsa, məzmunu boşluqda lütflə kəsəcəkdir.

Bu, maksimum simvol sayının birləşməsini istifadə edərək sözün üstündə kəsməyin gözəl bir yoludur. Ümid edirəm xoşlayırsan!

Və bunu edən bir ASP.NET funksiyası olub olmadığını öyrənəcəyimə əminəm ... birini tapa bilmədim.

7 Şərhlər

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

    Əgər $content ilkin olaraq $maxchars-dan QISA olarsa, yazılmış kod hələ də boşluq üçün sağdan sola baxacaq və son sözü kəsəcək. Siz $content-in sonunda boşluq birləşdirə və ya if (strlen()…) edə bilərsiniz.

  5. 5

    Bu, bir funksiya kimi işləyirdi (əvvəlki şərhə müraciət edərək):

    funksiya showexcerpt($content, $maxchars) {

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

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

    əgər ($pos>0) {
    $content = substr($content, 0, $pos);
    }

    $ məzmunu qaytarın. "...";

    } Else {

    $ məzmunu qaytarmaq;

    }

    }

  6. 6

    Əgər son xarakterimiz nöqtə, nida işarəsi və ya sual işarəsi kimi durğu işarəsidirsə? Təəssüf ki, bu kod qeyd olunan durğu işarəsindən əvvəlki bütün sözü siləcək.  

    Düşünürəm ki, bir az daha sağlam bir şey yazsanız daha yaxşı olar.

  7. 7

Siz nə düşünürsünüz?

Bu sayt spam azaldılması üçün Akismet istifadə edir. Yorumunuzun necə işləndiyini öyrənin.