PHP: alıntılarınızı strrpos kullanarak kelimeden kesin

HTML Kodu

PHP ile çalışıyorsanız ve yalnızca kaynak metninizden bir alıntı göstermek ve onu birkaç karakterde kesmek istiyorsanız, alıntılarınız orta dizede yapılırsa çirkin görünebilir. Bunu yapmak için ASP'de ve ASP.NET'te temelde son karakterden son boşluğu bulmak ve orada kesmek için geri dönen bir işlev yazmak zorunda kaldım. Biraz iğrenç ve biraz fazla öldürme. Bunu aslında evimde iş başında görebilirsiniz Kanal burada sadece ilk 500 karakteri sağlıyorum.

Bugün PHP ile aynı işlevi geliştirmeye tamamen hazırdım, ancak (her zamanki gibi) PHP'nin zaten bunu yapan bir işlevi olduğunu gördüm. strrpos.

Eski kod, ilk karakterden istediğiniz maksimum karakter sayısına ($ maxchars) kadar bir alt dizeyi ($ içerik) alacaktır:

$ içerik = substr ($ içerik, 0, $ maxchars); echo $ içeriği;

Yeni kod:

$ içerik = substr ($ içerik, 0, $ maxchars); $ konum = strrpos ($ içerik, ""); eğer ($ konum> 0) {$ içerik = substr ($ içerik, 0, $ konum); } echo $ içerik;

Böylece yeni kod, önce aradığınız karakter sınırında içeriği keser. Ancak, sonraki adım içerikteki son boşluğu (”“) aramaktır. $ pos bu pozisyon olarak sona erecek. Şimdi, $ pos> 0 olup olmadığını sorarak içerikte gerçekten bir boşluk olduğundan emin oluyorum. Yoksa, içeriği istediğim sayıda karakterde keser. Herhangi bir boşluk varsa, içeriğimi alanda incelikle kesecektir.

Bu, maksimum sayıda karakterin kombinasyonunu kullanmanın ve kelimeyi kesmenin güzel bir yoludur. Umarım seversin!

Ve bunu yapan bir ASP.NET işlevi olup olmadığını öğreneceğimden eminim… Birini bulamadım.

7 Yorumlar

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

    $content başlangıçta $maxchars değerinden KISA ise, yazıldığı gibi kod yine de bir boşluk için sağdan sola görünecek ve son kelimeyi kesecektir. $content öğesinin sonunda bir boşluk birleştirebilir veya bir if (strlen()…) yapabilirsiniz.

  5. 5

    Bu bir işlev olarak çalışıyor gibi görünüyordu (önceki yoruma hitap ediyor):

    function showexcerpt($içerik, $maxchars) {

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

    $içerik= substr($içerik, 0, $maxchars);
    $konum = strrpos($içerik, " ");

    if ($pos>0) {
    $içerik = substr($içerik, 0, $konum);
    }

    $içerik döndürür. "...";

    } Else {

    $ içerik döndürün;

    }

    }

  6. 6

    Ya son karakterimiz nokta, ünlem işareti veya soru işareti gibi bir noktalama işaretiyse? Ne yazık ki, bu kod, söz konusu noktalama işaretinden önceki tüm sözcüğü silecektir.  

    Bence biraz daha sağlam bir şeyler yazsan daha iyi olur.

  7. 7

Ne düşünüyorsunuz?

Bu site spam'i azaltmak için Akismet'i kullanıyor. Yorum verilerinizin nasıl işlendiğini öğrenin.