MySQL को लिखते समय TextArea से लाइन ब्रेक को संरक्षित करें


105

मैं उपयोगकर्ताओं को इनपुट टिप्पणियों के लिए सक्षम करने के लिए एक textarea का उपयोग कर रहा हूं। हालाँकि, यदि उपयोगकर्ता नई लाइनों में प्रवेश करते हैं, तो नई लाइनें दिखाई नहीं देती हैं जब वे आउटपुट होते हैं। क्या लाइन ब्रेक को रुकने का कोई तरीका है।

किसी भी विचार कैसे रेखा टूट को संरक्षित करते हैं?


मैंने अभी htmlawed को अक्षम किया है, और ऐसा लगता है कि इसका लाइन ब्रेक से कोई लेना-देना नहीं है, लाइन ब्रेक अभी भी नहीं दिखा है। इसलिए मैं सिर्फ textarea डेटा को सीधे mysql को लिख रहा हूं, और यह तब नहीं दिखता जब मैं mysql डेटाबेस से डेटा इको करता हूं।
हिरवेश

मैंने phpmyadmin का उपयोग करके mysql तालिका को भी ब्राउज़ किया है और टिप्पणी क्षेत्र देखा है। कोई <br/> टैग संग्रहीत नहीं किए जा रहे हैं,
हिरवेश

मैं एक फेसबुक शैली टिप्पणी प्रणाली कर रहा हूं, इसलिए मैं वास्तव में यह नहीं चाहता कि यह wysiwyg हो। कोई विचार नहीं कि लाइन ब्रेक क्यों संरक्षित नहीं करते हैं?
हिरवेश

जवाबों:


158

इसके लिए दो समाधान:

  1. PHP फ़ंक्शन nl2br():

    जैसे,

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
  2. <pre></pre>टैग में इनपुट लपेटें ।

    देखें: W3C विकी - एचटीएमएल / एलिमेंट्स / प्री


2
+1, बस PHP के लिए मेरे पसंदीदा पर एक विशेषाधिकार प्राप्त स्थान से सम्मानित किया गया nl2br():)
ज़ूल

1
मुझे लगता है, चुनना और स्टाइल करना <pre> </ pre> xss के लिए बहुत बेहतर है।
इगुरेली

38

यहाँ मैं क्या उपयोग है

$textToStore = nl2br(htmlentities($inputText, ENT_QUOTES, 'UTF-8'));

$inputTextपाठ या तो प्रपत्र या textarea द्वारा प्रदान की जाती है। आपके डेटाबेस में संग्रहित किया जाने $textToStoreवाला nl2brऔर से दिया गया पाठ है htmlentitiesENT_QUOTESदोहरे और एकल दोनों उद्धरणों को परिवर्तित करेगा, जिससे आपको उन लोगों से कोई परेशानी नहीं होगी।


2
मेरा मानना ​​है कि PHP में अब UTF-8 डिफ़ॉल्ट है। लेकिन निश्चित रूप से यह स्पष्ट होने के लिए चोट नहीं करता है।
प्रोफाइलटाइविट

संभवतः ग्रंथों के बीच सफेद रिक्त स्थान कैसे डालें?
JWC मई

आपको डेटाबेस में डेटा को हमेशा स्टोर करना चाहिए। फिर डेटा को प्रदर्शित करने से पहले उसे रूपांतरित और पवित्र करें।
एडवर्ड

3

मेरा खुद का जवाब मिला: Textarea से डेटा से इस समारोह का उपयोग समस्या हल करती है:

function mynl2br($text) { 
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />')); 
} 

यहाँ और अधिक: http://php.net/nl2br


2

मैं एक ही पाठ को संरक्षित करने के लिए इस दो विधि चरणों का उपयोग कर रहा हूं जो कि mysql में संग्रहीत करने के लिए textarea में है और एक समय पर मैं भी केवल सादे पाठ प्रदर्शित कर सकता हूं .....

चरण 1:

$status=$_POST['status'];<br/>
$textToStore = nl2br(htmlentities($status, ENT_QUOTES, 'UTF-8'));

क्वेरी में दर्ज करें $textToStore...।

चरण 2:

चुनिंदा क्वेरी के लिए कोड लिखें ... और सीधे गूंज मान ...

यह काम करता हैं


आपको डेटाबेस में डेटा को हमेशा स्टोर करना चाहिए। फिर डेटा को प्रदर्शित करने से पहले उसे रूपांतरित और पवित्र करें।
एडवर्ड

1

यह काम:

function getBreakText($t) {
    return strtr($t, array('\\r\\n' => '<br>', '\\r' => '<br>', '\\n' => '<br>'));
}

0
function breakit($t) {
    return nl2br(htmlentities($t, ENT_QUOTES, 'UTF-8'));
}

यह आपकी मदद कर सकता है

टेक्सारिया वॉक पास करें


-8

जब soooo आसान हो सकता है तो sooooo कठिन लोगों को क्यों बनाते हैं :)

//here is the pull from the form
$your_form_text = $_POST['your_form_text'];


//line 1 fixes the line breaks - line 2 the slashes
$your_form_text = nl2br($your_form_text);
$your_form_text = stripslashes($your_form_text);

//email away
$message = "Comments: $your_form_text";
mail("destination_email@whatever.com", "Website Form Submission", $message, $headers);

आपको स्पष्ट रूप से हेडर की आवश्यकता होगी और संभावना के लिए अधिक फ़ील्ड होंगे, लेकिन यह आपका टेक्सटेरिया है


6
यह असुरक्षित है और प्रश्न के लिए काफी प्रासंगिक नहीं है।
इवान डार्विन

1
बस इसे आज़माएं .... ईमेल या एसक्यूएल पर पोस्ट करें .... आलू आलू ..... लाइनों को चलाने की कोशिश करें और समस्या को ठीक करें .... अगर एक गुच्छा के बिना गड़बड़ कोड की लाइनें जो कभी-कभी काम करती हैं या नहीं। .... :)
डंकन

सभी उत्तरों में से, यह कम से कम संक्षिप्त रूप से है
जैकबॉसदेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.