2009-03-27 22 views
5

मुझे खुद को इस फ़ंक्शन की आवश्यकता है, और यह सोच रहा था कि यह पहले से ही PHP में मौजूद है या नहीं।क्या यह फ़ंक्शन PHP में मौजूद है?

/** 
* Truncates $str and returns it with $ending on the end, if $str is longer 
* than $limit characters 
* 
* @param string $str 
* @param int $length 
* @param string $ending 
* @return string 
*/ 
function truncate_string($str, $length, $ending = "...") 
{ 
    if (strlen($str) <= $length) 
    { 
     return $str; 
    } 
    return substr($str, 0, $length - strlen($ending)).$ending; 
} 

तो अगर सीमा 40 है और स्ट्रिंग है, उत्पादन होगा "जल्दी लोमड़ी आलसी भूरे रंग के कुत्ते पर कूद गया" "त्वरित लोमड़ी आलसी भौंह के ऊपर कूद गया ..."। ऐसा लगता है कि PHP में मौजूद चीज की तरह, इसलिए मुझे आश्चर्य हुआ जब मुझे यह नहीं मिला।

उत्तर

2

नहीं, यह अस्तित्व में नहीं है। कई पुस्तकालय इसे प्रदान करते हैं, हालांकि आप इसकी आवश्यकता वाले पहले व्यक्ति नहीं हैं। जैसे Smarty

5
$suffix = '...'; 
$maxLength = 40; 

if(strlen($str) > $maxLength){ 
    $str = substr_replace($str, $suffix, $maxLength); 
} 

आपका कार्यान्वयन इस बात पर निर्भर करता है कि प्रत्यय की लंबाई कुल स्ट्रिंग लंबाई की गणना की जानी चाहिए या नहीं।

+0

कि अच्छा नहीं है क्योंकि यह एक स्ट्रिंग $ maxLength की तुलना में कम करने के लिए प्रत्यय जोड़ देता है के लिए एक लाइन संस्करण है। –

+0

सच है, आपको अभी भी इसे अपने स्वयं के फ़ंक्शन में लपेटना होगा, जो केवल उस स्थिति के आधार पर substr_replace() चलाता है। –

4

यहाँ उन दिलचस्पी

<?php 
    echo (strlen($string) > 40 ? substr($string, 0, 37)."..." : $string); 
?> 
+0

यह मेरी पहली प्रतिक्रिया भी थी। यद्यपि आपकी स्ट्रिंग लम्बाई से अपने प्रत्यय की लंबाई घटाएं, या फिर आपके पास 43-वर्ण परिणाम –

+0

अच्छा काम होगा लेकिन इम्हो टर्नरी कोड की तुलना में कोड पढ़ने में आसान उपयोग करना बेहतर है, जब तक कि यह एक चरम गति की स्थिति न हो, जहां आप हों यह दस लाख बार लूपिंग। – TravisO

+0

बेशक, मैं सहमत हूं। इसलिए दिलचस्पी रखने वालों के लिए मेरा शब्द। –

संबंधित मुद्दे