यह एक ठग प्रतीत हो सकता है, लेकिन बाकी का आश्वासन दिया है कि यह नहीं है - मैंने अपनी समस्या के जवाब के लिए एसओ के साथ-साथ बाकी वेब पर भी खोज की है और एक ही अपर्याप्त "समाधान" को बार-बार ढूंढना समाप्त कर दिया है। किसी भी तरह, यहाँ यह जाता है:
मैं एक textarea से एक MySQL डेटाबेस (एक वर्डप्रेस पर्यावरण के भीतर, लेकिन यह इस समस्या के लिए कोई फर्क नहीं पड़ता, मुझे विश्वास है) से उपयोगकर्ता इनपुट को बचा रहा है। बाद में इसे डीबी से पुनर्प्राप्त किया जाता है ताकि साइट के बैकएंड में एडमीन को दिखाया जा सके। समस्या तब होती है जब उपयोगकर्ता लाइन ब्रेक के साथ पाठ सबमिट करते हैं (यानी एंटर कुंजी दबाएं)।
एक नमूना स्ट्रिंग इस तरह दिख सकता है:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
स्ट्रिंग में पंक्ति वर्णों ("\ n", "\ r", या जैसे) का कोई अंत नहीं है।
मैं nl2br()
इसका उपयोग एचटीएमएल आउटपुट उत्पन्न करने के लिए कर रहा हूं , लेकिन यह पर्याप्त नहीं है। फिर परिणाम है:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
जो, जहां तक मैं समझता हूं, यह अपेक्षित nl2br()
परिणाम है, क्योंकि यह टैग को सम्मिलित करता है और पहली जगह में लाइन-ब्रेक को बदलने के लिए नहीं माना जाता है?
हालाँकि मुझे जो प्रारूप चाहिए वह यह होगा:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
तो स्ट्रिंग इस तरह के "\ n" उस में, मैं इसके साथ या तो मारा था के रूप में EOL वर्ण थे str_replace()
या preg_replace()
और इसके साथ किया जाना है, लेकिन अगर कोई वर्ण नहीं है वहाँ मैं कोई सुराग नहीं क्या सुई या तो उन कार्यों की फ़ीड करने के लिए है पहली जगह में।
मैं DB में संबंधित फ़ील्ड को मैन्युअल रूप से एक्सेस कर सकता हूं, हर लाइनब्रेक के लिए बैकस्पेस को हिट कर सकता हूं और बाद में मैं स्ट्रिंग कार्यों के साथ क्या करना चाहता हूं। इसलिए मुझे पता है कि मुझे उपरोक्त प्रारूप की आवश्यकता है।