Pertahankan Pemutusan Baris Dari TextArea Saat Menulis Ke MySQL


105

Saya menggunakan textarea untuk memungkinkan pengguna memasukkan komentar. Namun, jika pengguna memasukkan baris baru, baris baru tidak muncul saat dikeluarkan. Apakah ada cara untuk membuat jeda baris tetap ada.

Tahu bagaimana cara mempertahankan jeda baris?


Saya baru saja menonaktifkan htmlawed, dan tampaknya itu tidak ada hubungannya dengan jeda baris, jeda baris masih tidak muncul. Jadi saya hanya menulis data textarea langsung ke mysql, dan itu tidak muncul ketika saya menggemakan data dari database mysql.
Hirvesh

Saya juga telah menjelajahi tabel mysql menggunakan phpmyadmin dan melihat kolom komentar. Tidak ada tag <br/> yang disimpan,
Hirvesh

Saya melakukan sistem komentar gaya Facebook, jadi saya tidak benar-benar menginginkannya menjadi wysiwyg. Tidak ada ide mengapa jeda baris tidak dipertahankan?
Hirvesh

Jawaban:


158

Dua solusi untuk ini:

  1. Fungsi PHP nl2br() :

    misalnya,

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
  2. Bungkus masukan dalam <pre></pre>tag.

    Lihat: Wiki W3C - HTML / Elements / pre


2
+1, Baru saja dianugerahi tempat istimewa di Favorit saya untuk PHP nl2br():)
Zuul

1
Saya pikir, memilih dan menata <pre> </pre> jauh lebih baik untuk xss.
EGurelli

38

Inilah yang saya gunakan

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

$inputTextadalah teks yang disediakan oleh formulir atau textarea. $textToStoreadalah teks yang dikembalikan dari nl2brdan htmlentities, untuk disimpan dalam database Anda. ENT_QUOTESakan mengonversi tanda kutip ganda dan tunggal, jadi Anda tidak akan mengalami masalah dengan itu.


2
Saya yakin UTF-8 sekarang menjadi default dalam PHP. Tapi tentu saja tidak ada salahnya untuk bersikap eksplisit.
ProfileTwist

Bagaimana cara memasukkan spasi putih di antara teks?
JWC

Anda harus selalu menyimpan data mentah di database. Kemudian ubah dan bersihkan data sebelum Anda menampilkannya.
Edward

3

Punya jawaban saya sendiri: Menggunakan fungsi ini dari data dari textarea memecahkan masalah:

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

Selengkapnya di sini: http://php.net/nl2br


2

Saya menggunakan dua langkah metode ini untuk mempertahankan teks yang sama yang ada di textarea untuk disimpan di mysql dan pada saat yang sama saya juga bisa menampilkan teks biasa .....

Langkah 1:

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

Dalam kueri masukkan $textToStore....

Langkah 2:

tulis kode untuk kueri pemilihan ... dan nilai gema langsung ....

Berhasil


Anda harus selalu menyimpan data mentah di database. Kemudian ubah dan bersihkan data sebelum Anda menampilkannya.
Edward

1

Ini bekerja:

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'));
}

ini dapat membantu Anda

lulus textarea wal


-8

mengapa membuat orang sangat sulit padahal bisa sangat mudah :)

//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);

Anda jelas akan membutuhkan tajuk dan kemungkinan memiliki lebih banyak bidang, tetapi ini adalah textarea Anda yang diurus


6
Ini tidak aman dan tidak relevan dengan pertanyaan.
Evan Darwin

1
Coba saja .... Kirim ke email atau SQL .... Kentang kentang ..... Coba jalankan baris dan perbaiki masalah .... Tanpa banyak jika baris kode berantakan yang terkadang berfungsi atau tidak .... :)
Duncan

Dari semua jawaban, yang ini paling tidak ringkas
JacobRossDev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.