मैं बेसलाइन के रूप में शब्दों की संख्या का उपयोग करने के खिलाफ सिफारिश करेंगे। आप अधिक कम या अधिक प्रदर्शित करने के इरादे से अधिक डेटा आसानी से समाप्त कर सकते हैं।
अतीत में उपयोग किया गया एक दृष्टिकोण वांछित लंबाई के लिए पूछना है, लेकिन सुनिश्चित करें कि यह किसी शब्द को छोटा नहीं करता है। यहाँ कुछ है कि आप के लिए काम कर सकते हैं क्या है:
function function_that_shortens_text_but_doesnt_cutoff_words($text, $length)
{
if(strlen($text) > $length) {
$text = substr($text, 0, strpos($text, ' ', $length));
}
return $text;
}
कहा, यदि आप str_word_count
से पीछे नहीं पैरामीटर के रूप में 1
गुजरती हैं, यह सब शब्दों से युक्त एक सरणी वापस आ जाएगी, और आप उस पर सरणी हेरफेर का उपयोग कर सकते हैं। इसके अलावा, आप कर सकते हैं, हालांकि, यह कुछ हकी है, रिक्त स्थान पर स्ट्रिंग को विस्फोट कर रहा है ... लेकिन यह त्रुटि के लिए बहुत सारे कमरे पेश करता है, जैसे चीजें जो शब्दों के रूप में गिनती नहीं होती हैं।
पीएस। यदि आपको उपरोक्त फ़ंक्शन के यूनिकोड सुरक्षित संस्करण की आवश्यकता है, और उसके पास mbstring
या iconv
एक्सटेंशन इंस्टॉल हैं, तो बस सभी स्ट्रिंग फ़ंक्शंस को उनके mb_
या iconv_
प्रीफ़िक्स्ड समकक्षों से प्रतिस्थापित करें।,
function get_len_of_word($str,$number) { $array_str = explode(" ", $str); if(isset($array_str[$number])) { return implode(" ",array_slice($array_str, 0, $number)); } return $str; }
सभी प्रतिक्रियाएं गुणवत्ता हैं, लेकिन आपने समझाया कि मुझे शब्दों के बजाय वर्णों से क्यों जाना चाहिए। धन्यवाद! – JasonBartholme
वैसे, आप उस स्थिति को संबोधित नहीं करते हैं जहां पहले '$ लंबाई' वर्णों में कोई स्थान नहीं है, और आप अभी भी * अधिक * कम डेटा के साथ समाप्त कर सकते हैं, यदि आप केवल एक ही स्थान प्रदर्शित करना चाहते हैं चौथा चरित्र या तो (समाधान के लिए मेरा जवाब देखें)। – Zarel
ईमानदारी से, मैंने इस विधि का उपयोग करने के लिए, यह कभी भी कभी भी एक मुद्दा नहीं होगा। अच्छा बिंदु, यद्यपि। – jason