MySQL'e Yazarken TextArea'dan Satır Sonlarını Koru


105

Kullanıcıların yorum girmesini sağlamak için bir metin alanı kullanıyorum. Ancak, kullanıcılar yeni satırlar girerse, yeni satırlar çıktı alınırken görünmez. Satır sonlarının kalmasını sağlamanın bir yolu var mı?

Satır sonlarını nasıl koruyacağınıza dair bir fikriniz var mı?


Htmlawed'i devre dışı bıraktım ve görünen o ki satır sonlarıyla hiçbir ilgisi yok, satır sonları hala görünmüyor. Bu yüzden, sadece metin alanı verilerini doğrudan mysql'e yazıyorum ve mysql veritabanındaki verileri yansıttığımda görünmüyor.
Hirvesh

Ayrıca phpmyadmin kullanarak mysql tablosuna göz attım ve yorum alanını gördüm. Hiçbir <br/> etiketi saklanmıyor
Hirvesh

Facebook tarzı bir yorum sistemi yapıyorum, bu yüzden gerçekten wysiwyg olmasını istemiyorum. Satır sonlarının neden korunmadığı hakkında bir fikriniz yok mu?
Hirvesh

Yanıtlar:



38

İşte kullandığım şey

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

$inputTextform veya metin alanı tarafından sağlanan metindir. veritabanınızda depolanacak ve $textToStoreöğesinden döndürülen metindir . hem çift hem de tek tırnakları dönüştürür, böylece bunlarla sorun yaşamazsınız.nl2brhtmlentitiesENT_QUOTES


2
UTF-8'in artık PHP'de varsayılan olduğuna inanıyorum. Ama tabii ki açık olmaktan zarar gelmez.
ProfileTwist

Metinler arasına beyaz boşluk nasıl eklenebilir?
JWC

Verileri her zaman veritabanında ham olarak depolamalısınız. Ardından, görüntülemeden önce verileri dönüştürün ve sterilize edin.
Edward

3

Kendi cevabımı aldım: Metin alanındaki verilerden bu işlevi kullanmak sorunu çözer:

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

Daha burada: http://php.net/nl2br


2

mysql'de saklamak için textarea'da bulunan aynı metni korumak için bu iki yöntem adımını kullanıyorum ve bir anda düz metni de görüntüleyebiliyorum .....

Aşama 1:

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

Sorguda şunu girin $textToStore...

Adım 2:

seçme sorgusu için kod yazın ... ve doğrudan yankı değerleri ...

İşe yarıyor


Verileri her zaman veritabanında ham olarak depolamalısınız. Ardından, görüntülemeden önce verileri dönüştürün ve sterilize edin.
Edward

1

Bu çalışıyor:

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

bu sana yardımcı olabilir

textarea wal'ı geçmek


-8

make soooo soooo easy iken neden bu kadar zor insanlar :)

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

açıkça başlıklara ihtiyacınız olacak ve büyük olasılıkla daha fazla alana sahip olacaksınız, ancak bu sizin dikkat etmeniz gereken metin alanınız


6
Bu güvensiz ve soruyla pek alakalı değil.
Evan Darwin

1
Sadece deneyin .... E-postaya veya SQL'e gönderin .... Patates patates ..... Satırları çalıştırmayı deneyin ve sorunu düzeltin .... Bazen çalışan veya çalışmayan karışık kod satırları olmadan .... :)
Duncan

Tüm cevaplar arasında, bu en az özlü
JacobRossDev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.