2012-12-20 11 views
6

<div> में मेरे पास कुछ टेक्स्ट है। div की वजह से - पाठ कई पंक्तियों में दिखाया गया है। जैसे निम्नलिखित कोड:दो पहली टेक्स्ट लाइनों को रखें, बाकी सब कुछ हटाएं

<div>text01 text02 text03 text04 text05 text06 text07 text08 text09 text10 text11 text12</div> 

उदाहरण में दिखाया जा सकता है चार लाइनें:

text01 text02 text03 
text04 text05 text06 
text07 text08 text09 
text10 text11 text12 

मैं केवल पहले दो लाइनों रखना चाहते हैं, और अगर आगे लाइनों मौजूद हैं उन्हें निकाल दिया और एक नया (इसलिए तीसरे) पाठ पंक्ति के रूप में पाठ लाइन ... के साथ प्रतिस्थापित किया जाना चाहिए।
दूसरे शब्दों में: मैं दूसरी पंक्ति ब्रेक (यदि मौजूद है) ढूंढना चाहता हूं और ... कहकर टेक्स्ट लाइन के साथ इस बिंदु के बाद सभी टेक्स्ट को प्रतिस्थापित करना चाहता हूं।

तो, अगर मैं पाठ की दो पंक्तियाँ है, कुछ भी नहीं बदला है:

text text text 
text text text 

लेकिन अगर मैं दो से अधिक लाइनों के ऊपर की तरह है, मैं इस मिल जाएगा:

text01 text02 text03 
text04 text05 text06 
... 

किसी भी अच्छा सलाह?

+2

इसे करना PHP पक्ष (यानी सर्वर पक्ष) आसान नहीं है, क्योंकि क्लाइंट रिज़ॉल्यूशन के आधार पर लाइन आकार अलग-अलग होगा। –

+0

तो कुछ जावास्क्रिप्ट की आवश्यकता है? – Steeven

+0

पसंदीदा है, हां। – KingCrunch

उत्तर

-1

आप अपनी स्ट्रिंग (div की सामग्री) को सरणी में विभाजित करने के लिए explode() का उपयोग कर सकते हैं। विभाजित टोकन के रूप में <br> या /n का उपयोग करें। फिर आप सरणी के पहले दो तत्वों के साथ div की सामग्री को प्रतिस्थापित कर सकते हैं।

$content = 'Hello<br>World<br>Other<br>Stuff'; 
$lines = explode('<br>',$content,2); 

echo '<div>'$lines[0].'<br>'.$lines[1].'<br>...</div>' 
+0

लेकिन अगर मेरी टेक्स्ट लाइन सिर्फ है: '$ content = 'हैलो वर्ल्ड अन्य स्टफ'; बिना किसी'
'के बिना, क्या स्क्रिप्ट तब \ n' को स्वचालित रूप से जोड़े जाने में सक्षम होगी? – Steeven

+0

आप nl2br ($ सामग्री) का उपयोग कर सकते हैं; – Tuim

+0

मैं यह काम नहीं कर सकता। '$ ए = विस्फोट ('
', nl2br ($ सामग्री) के साथ एक गिनती; इको गिनती ($ ए) 'टेक्स्ट में मौजूद पहले से मौजूद मौजूदा लाइनब्रेक की गणना करता है। यह 'div' के अंदर पाठ को लपेटकर लाइन ब्रेक नहीं देखता है। – Steeven

5

आपको लगता है कि सीएसएस में और यदि आवश्यक हो जावास्क्रिप्ट जोड़ने करना चाहिए।

सीएसएस में आप सेट कर सकते हैं:

.two-line-div { 
    max-height: 3em; /* or whatever adds up to 2 times your line-height */ 
    overflow: hidden; 
} 

कि वांछित ऊंचाई करने के लिए बॉक्स कम हो जाएगा।

यदि आप हमेशा ... (यदि सामग्री हमेशा 2 लाइनों से अधिक है) दिखाना चाहते हैं, तो बस अपने div के बाद तीन बिंदुओं के साथ एक तत्व जोड़ें।

आप ... के साथ एक और पंक्ति जोड़ने के लिए है, तो सामग्री तुम क्या दिखा रहे हैं, तो आप जावास्क्रिप्ट की जरूरत मूल ऊंचाई की गणना करने के हैं, देखें कि क्या वह अधिक से अधिक 2 लाइनों और जोड़ने/गतिशील अगर एक तत्व को दिखाने से भी बड़ा है चाहते हैं यह है।

ध्यान दें कि एक सीएसएस समाधान कुछ भी नहीं हटाता है, सभी लाइनें हैं, वे बस दिखाई नहीं दे रहे हैं।

+0

धन्यवाद। मुझे वास्तव में इससे अधिक गतिशील होने की आवश्यकता है; यदि केवल एक पंक्ति है, तो आसपास के 'div' बॉक्स को ऊंचाई में 3em स्थायी रूप से कहने के बजाय, केवल एक पंक्ति ऊंचाई ऊंची होनी चाहिए। – Steeven

+0

बेशक इसे जेएस के साथ भी समायोजित किया जा सकता है ... – Steeven

+0

@ स्टेवेन स्वचालित है, मैं 'ऊंचाई' के बजाय 'अधिकतम-ऊंचाई' का उपयोग कर रहा हूं, इसलिए केवल एक पंक्ति के साथ, लेकिन बॉक्स केवल एक पंक्ति होगी। 'अधिकतम-ऊंचाई' बॉक्स को एक निश्चित अधिकतम तक बढ़ने के लिए कहता है। – jeroen

0

एक शुद्ध सीएसएस आधुनिक ब्राउज़रों के अधिकांश में काम कर समाधान नहीं है (कुछ पुराने फ़ायरफ़ॉक्स संस्करण इसका समर्थन नहीं किया था):

div { 
    overflow: hidden; /* "overflow" value must be different from "visible" */ 
    text-overflow: ellipsis; /* the magic dots...*/ 
    height: <yourHeightValue> 
    width: <yourWidthValue> 
} 

PHP में कुछ इस तरह कर रहा निर्भर करता है, थोड़ा और अधिक जटिल हो सकता है डीआईवी में क्या है (नेस्टेड एचटीएमएल ?, आपके लिए वास्तव में "रेखा" क्या है -> एक HTML ब्रेक <br>, लाइन-ब्रेक \ n)? ज्यादातर मामलों में PHP समाधान परिभाषित स्ट्रिंग या वर्ड लम्बाई के बाद विभाजित होते हैं। आप इस तरह की टेक्स्ट सीमाओं के लिए कुछ उदाहरण पा सकते हैं, this one एक जटिल समाधान है जो एचटीएमएल टैग को भी संभाल सकता है।

+0

'इलिप्सिस' बेहतर लगता है कि यह वास्तव में है; यह केवल एक पंक्ति के लिए काम करता है, न कि कई लाइनों के लिए। – jeroen

+0

यह शुद्ध पाठ की टेक्स्ट लाइन है, कोई HTML नहीं। यदि 'एलिप्सिस' लंबवत रूप से काम करता है और न केवल क्षैतिज रूप से, यह सही है। मैं इसे ऐसा नहीं कर सकता, हालांकि ... – Steeven

+0

हाँ, आप सही हैं, इसके बारे में भूल गए। इलिप्सिस अभी भी एक बहु-रेखा संदर्भ में अनुपयोगी है। –

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