Soru Sınır Dize Uzunluğu


Bir dizgiyi php ile sınırlamak ve ipin çok uzun olması durumunda sonunda eklemek için bir yol arıyorum.


42
2018-06-10 23:32


Menşei


Bulabilirsin s($str)->truncate($length) ya da s($str)->truncateSafely($length) bulunan, yararlı bu bağımsız kütüphane. - caw


Cevaplar:


Aşağıdakine benzer bir şey kullanabilirsiniz:

if (strlen($str) > 10)
   $str = substr($str, 0, 7) . '...';

97
2018-06-10 23:37



Ödevlerini okuma ödevlerini atladığını düşünmedin sanırım. - dlamblin
Üzgünüm hayır bunu düşünmedim. Ödev için kurallar nelerdir? Oh ve bekle, sadece fark ettim, kodum düzgün çalışmıyor;) - bramp
Bu sadece bir topluluk kuralı: meta.stackexchange.com/questions/10811/... - dlamblin
UTF-8 karakterlerinin bir alt dizini almak için, mb_substr'i şiddetle tavsiye ediyorum -> mb_substr($utf8string,0,5,'UTF-8'); Dilimin yanlış uzunluğunu bu şekilde önlersiniz. - vinsa


itibaren php 4.0.6 , aynı şey için bir işlev var

fonksiyon mb_strimwidth ihtiyacınız için kullanılabilir

<?php
echo mb_strimwidth("Hello World", 0, 10, "-yahooo!-");
//Hello W-yahooo!-
?>

Yine de daha fazla seçenek var, bunun için belgeler mb_strimwidth


15
2017-11-04 06:40



wordwrap () işlevi de yararlı olabilir: w3schools.com/php/func_string_wordwrap.asp - Cyril Jacquart
Ama kişisel olarak, kullanmayı tercih ediyorum: $ s = preg_replace ('/ \ s + (\ S +)? $ /', '', Substr ($ s, $ START, $ LIMIT)); - Cyril Jacquart
@CyrilJacquart, gerekli olmadığı yerlerde normal ifadeleri kullanmaktan kaçınmak için daha iyidir. - Sarath Sadasivan Pillai


Bu cevaba bir göz atmak isteyebilirsiniz. kelimeleri bölmek istemiyorsan.

Kelimeleri bölmekle ilgilenmiyorsanız, php substr işlevi.


6
2018-06-10 23:37





İle küçük bir ödev yapmak php çevrimiçi kılavuzun dize fonksiyonları. Kullanmak istersiniz strlen karşılaştırma ayarında substr gerekiyorsa onu kesmek ve birleştirme işleci ile "..." veya "&hellip;"


3
2018-06-10 23:37





Laravel'de bunun için bir dize kullan fonksiyonu vardır ve bu şekilde uygulanır:

public static function limit($value, $limit = 100, $end = '...')
{
    if (mb_strwidth($value, 'UTF-8') <= $limit) {
        return $value;
    }

    return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end;
}

1
2017-09-05 17:46





Bir sözcük kırmadan maksimum sınırın sağladığı bir dizeyi kırpmak için şunu kullanın:

/**
 * truncate a string provided by the maximum limit without breaking a word
 * @param string $str
 * @param integer $maxlen
 * @return string
 */
public static function truncateStringWords($str, $maxlen)
{
    if (strlen($str) <= $maxlen) return $str;

    $newstr = substr($str, 0, $maxlen);
    if (substr($newstr, -1, 1) != ' ') $newstr = substr($newstr, 0, strrpos($newstr, " "));

    return $newstr;
}

0
2017-10-30 16:25





Başka bir şekilde php'de bir diziyi sınırlamak ve daha fazla okunan metne eklemek veya aşağıdaki kodu kullanarak '...' gibi

if (strlen(preg_replace('#^https?://#', '', $string)) > 30) { 
    echo substr(preg_replace('#^https?://#', '', $string), 0, 35).'&hellip;'; 
}

0
2017-11-09 10:24