2012-05-04 19 views
5

द्वारा स्ट्रिंग स्प्लिट के मध्य बिंदु पर एक लाइन ब्रेक कैसे जोड़ूं php का उपयोग कर: मैं स्ट्रिंग के सापेक्ष मध्य में स्थित व्हाइटस्पेस पर एक लाइन ब्रेक कैसे डाल सकता हूं? या दूसरे शब्दों में, मैं शब्दों को वाक्य में कैसे गिन सकता हूं और फिर आधे रास्ते पर वाक्य में एक लाइन ब्रेक डाल सकता हूं?मैं व्हाइटस्पेस

विचार ब्लॉग लेख लेखों की दूसरी पंक्ति पर विधवाओं (त्याग किए गए शब्दों) से बचने के लिए है, जो अनिवार्य रूप से प्रत्येक शीर्षक को आधे में काटकर और दो पंक्तियों पर रखकर शीर्षक को एक से अधिक पंक्ति में ले जाता है।

अग्रिम धन्यवाद।

अद्यतन: हाय सब, मुझे एहसास हुआ कि मुझे व्हाइटस्पेस द्वारा शीर्षक को विभाजित करने के लिए preg_split फ़ंक्शन की आवश्यकता है। क्षमा करें अगर वह हिस्सा प्रश्न में स्पष्ट नहीं था। मैं असफ़ के जवाब में संशोधन किया और इस प्रयोग किया है:

$title_length = strlen($title); 
if($title_length > 30){ 
    $split = preg_split('/ /', $title, null, PREG_SPLIT_NO_EMPTY); 
    $split_at = ceil(count($split)/2); 
    echo $split_at; 
    $broken_title = ''; 
    $broken = false; 
    foreach($split as $word_pos => $word){ 
     if($word_pos == $split_at && $broken == false){ 
      $broken_title.= '<br />'."\n"; 
      $broken = true; 
     } 
     $broken_title .= $word." "; 
    } 
    $title = $broken_title; 
} 

मैं करने के लिए इतना नया हूँ और मैं समुदाय की शक्ति से उड़ा रहा हूँ। चीयर्स।

+0

आप बीच में एक वाक्य में एक लाइन ब्रेक जोड़ना चाहते हैं? –

+0

हाय डेविड, हां। स्पष्टीकरण देने में कोई मदद स्वागत है। मुझे वास्तव में पहले एक ब्लॉग आलेख शीर्षक की लंबाई की जांच करने की आवश्यकता है। फिर, यदि एक पंक्ति पर फिट होना बड़ा है, तो मुझे बीच में एक लाइन ब्रेक डालना होगा। –

उत्तर

5

PHP का wordwrap() फ़ंक्शन का उपयोग करें। आप अपनी स्ट्रिंग की लंबाई 2 को 2 तर्क के रूप में विभाजित कर सकते हैं।

<?php 
$sentence = 'This is a long sentence that I would like to break up into smaller pieces.'; 
$width = strlen($sentence)/2; 
$wrapped = wordwrap($sentence, $width); 
echo $wrapped; 
?> 

यह आउटपुट:

This is a long sentence that I would 
like to break up into smaller pieces. 

आप HTML आउटपुट चाहते हैं, आप ब्रेक वर्णों निर्दिष्ट करने के लिए वैकल्पिक 3 तर्क का उपयोग कर सकते यहाँ एक उदाहरण है। इस तरह:

$wrapped = wordwrap($sentence, $width, '<br />'); 
+1

ऐसा लगता है कि मुझे क्या चाहिए। कोशिश करने के लिए बंद करो। बहुत बहुत धन्यवाद। –

+0

@Aasaph यह बुरा है क्योंकि यह वाक्य को मध्य के बीच में काट सकता है। –

+1

@ डेविडबेलर नंबर। यह शब्दों के बीच में नहीं टूटता है। यह ['wordwrap()'] (http://php.net/manual/en/function.wordwrap.php) फ़ंक्शन का बिंदु है। – Asaph

0

UPDATED

<?php 
$Sentence = 'I will go to the school tomorrow if it is not raining outside and if David is ok with it.'; 
$Split = explode(' ', $Sentence); 

$SplitAt = 0; 
foreach($Split as $Word){ 
    $SplitAt+= strlen($Word)-1; 
    if($SplitAt >= strlen($Sentence)){ 
     break; 
    } 
} 

$NewSentence = wordwrap($Sentence, $SplitAt, '<br />' . PHP_EOL); 


echo $NewSentence; 
?> 

का उत्पादन इस:

मैं कल स्कूल जाना होगा अगर यह < br/> \ N
बाहर बारिश हो रही नहीं है और यदि डेविड इसके साथ ठीक है।

संपादित: जोड़ा गया PHP_EOL < br साथ सभी सिस्टम प्लस एचटीएमएल मैच के लिए/>

+0

वाह डेविड, धन्यवाद। मैं नियमित अभिव्यक्तियों से बहुत परिचित नहीं हूं, लेकिन यह वास्तव में उपयोगी लगता है। 'Word_wrap()' फ़ंक्शन का उपयोग करने के बजाय मुझे इस दृष्टिकोण का उपयोग करना चाहिए? –

+0

@ ब्रैंडनब्रॉउन मुझे खेद है कि मैंने अपनी पोस्ट संपादित की। Word_wrap के साथ जाना बेहतर है। मैंने देखा कि यह कहीं एक शीर्षक के लिए था, एक शीर्षक में अंतरिक्ष के साथ बहुत अधिक शब्द होगा। –

+0

@ ब्रैंडनब्रॉउन वास्तव में यह ['wordwrap()'] (http://php.net/manual/en/function.wordwrap.php) है, न कि 'word_wrap() '। मैंने अपना जवाब अपडेट किया। शुरुआत में टाइपो के बारे में खेद है। – Asaph

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