2010-06-19 13 views
5

डालना मैं reallyreallyreallyreallyreallylongfilename जैसे reallyreallyre...yreallyreally जैसी लंबी स्ट्रिंग को चालू करना चाहता हूं।एक PHP स्ट्रिंग की लंबाई को कम करना और एक अंडाकार

असल में, स्ट्रिंग के बीच को ढूंढें और स्ट्रिंग की लंबाई < को इंगित करने के लिए इलिप्स सहित 30 वर्णों को प्रतिबिंबित करने के लिए इलिप्स सहित 30 वर्णों को प्रतिस्थापित किया गया है।

function cutString($input, $maxLen = 30) 
{ 
    if(strlen($input) < $maxLen) 
    { 
     return $input; 
    } 

    $midPoint = floor(strlen($input)/2); 
    $startPoint = $midPoint - 1; 

    return substr_replace($input, '...', $startPoint, 3); 
} 

यह स्ट्रिंग के केंद्र पाता है और . के साथ एक चरित्र दोनों ओर की जगह लेकिन बात मैं बाहर काम नहीं कर सकता है कि यह कैसे करना है:

यह मेरा कोड जहां मैं इस की कोशिश की है है इसे 30 वर्णों तक काट दें, या जो भी $maxLen है।

उम्मीद है कि आप मेरे सवाल को समझते हैं, मुझे नहीं लगता कि मैं इसे समझा 8)

धन्यवाद पर एक बहुत अच्छा काम किया है है।

उत्तर

8

कैसे के बारे में:

if (strlen($input) > $maxLen) { 
    $characters = floor($maxLen/2); 
    return substr($input, 0, $characters) . '...' . substr($input, -1 * $characters); 
} 
+0

केवल कहते हैं कि एक '' ... स्ट्रिंग के सामने है, इसलिए उत्पादन होता है '... reallyreallyreallyreallyreally'। –

+2

एर, इसे स्ट्रिंग जेम्स के बीच में '...' रखना चाहिए, वहां दो सब्सक्राइब कॉल हैं। – Amber

+0

मुझे पता है कि वहाँ हैं। लेकिन अगर मैं अपने कोड को अपने 'कटस्ट्रिंग' फ़ंक्शन में डालता हूं तो यह स्ट्रिंग के सामने इलिप्स के साथ एक स्ट्रिंग देता है। –