PDA

View Full Version : سوال: چرا پاراگراف جدید توی textarea ایجاد نمی شه؟



idocsidocs
پنج شنبه 27 مهر 1391, 14:18 عصر
من یه فرم دارم و از textarea استفاده می کنم و توضیحات کالا رو از کاربر می گیرم.

مقادیر textarea رو به تابع htmlentities می دم و بعد توی دیتابیس ذخیره می کنم.

اما موقع نمایش، حتی اگر بین خط ها چند بار از اینتر استفاده کرده باشم، هیچ خط شکسته یا پاراگرافی توی صفحه ایجاد نمی شه و همه خطها به هم چسبیده و پشت سر هم هستن.

مشکل چیه و چطور می تونم مشکل رو برطرف کنم؟

colors
پنج شنبه 27 مهر 1391, 14:35 عصر
سلام

اگه تابع htmlentities رو به صورت زیر استفاده کردین، نباید مشکلی باشه. تست کردم.

htmlentities($value, ENT_QUOTES, "UTF-8");

reza10wert
پنج شنبه 27 مهر 1391, 14:54 عصر
از این تابع استفاده کن
nl2br()

idocsidocs
پنج شنبه 27 مهر 1391, 15:53 عصر
htmlentities($value, ENT_QUOTES, "UTF-8");
من از همین تابع استفاده می کنم

از این تابع استفاده کن
nl2br()
با این تابع مشکل حل شد ولی چه دلیلی داره که باید از این تابع استفاده کنم؟

reza10wert
پنج شنبه 27 مهر 1391, 16:08 عصر
در واقع این تابع جاهایی که اینتر زده میشه رو به جاش <br> میذاره که هنگام نمایش به سطر بعدی برود .

idocsidocs
پنج شنبه 27 مهر 1391, 17:01 عصر
در واقع این تابع جاهایی که اینتر زده میشه رو به جاش <br> میذاره که هنگام نمایش به سطر بعدی برود .


کاربرد تابع رو می دونم ولی نمی شه کاری کرد که به این تابع نیاز نباشه؟

colors
پنج شنبه 27 مهر 1391, 17:25 عصر
کاربرد تابع رو می دونم ولی نمی شه کاری کرد که به این تابع نیاز نباشه؟

جالبه. همین چند روز پیش رو این پروژه ای که دارم به همین مشکل برخوردم. اولش تابع nl2br رو گذاشتم حل شد بعدش حذفش کردم بازم حل شد و مشکلی نبود!

آها معذرت من بعد از واکشی اطلاعات از بانک محتویاتشو تو textarea نمایش میدم که این مشکلو ندارم.

reza10wert
پنج شنبه 27 مهر 1391, 18:43 عصر
راههای مختلفی داره که از این تابع نخواد استفاده کرد
مثلا استفاده از ادیتورها

idocsidocs
پنج شنبه 27 مهر 1391, 19:25 عصر
مثلا استفاده از ادیتورها
بدون ادیتور راهی نیست که نیاز به این تابع نباشه؟

Unique
جمعه 28 مهر 1391, 01:29 صبح
بدون ادیتور راهی نیست که نیاز به این تابع نباشه؟

میدونی مشکل شما چیه ؟! مشکل اینه که میگی میدونم این تابع چیکار میکنه اما در واقع نمیدونید !!
شما داری اطلاعات را با html نمایش میدی دیگه ؟ درسته ؟ خوب حالا که درسته کاراکتر 10#13# یا همون r\n\ که همون CRLF باشه توی html هیچ معنی نداره ! مترادف اینها توی html مقدار <br> هست ! پس چه بخوای و چه نخوای باید این CRLF را به <br> تبدیل کنی که یا باید با str_replace این کار را بکنی یا nl2br.

idocsidocs
جمعه 28 مهر 1391, 02:19 صبح
میدونی مشکل شما چیه ؟! مشکل اینه که میگی میدونم این تابع چیکار میکنه اما در واقع نمیدونید !!
توی کتابا نوشته بودن این تابع کاراکتر خط شکسته رو به br تبدیل می کنه.

فقط نمی دونستم که این کاراکترها توی html معنی نداره:چشمک:

MMSHFE
جمعه 28 مهر 1391, 23:07 عصر
HTML کلاً Whitespaceهای بیش از یک مورد رو نادیده میگیره و فقط یکیشون رو شناسایی میکنه و ضمناً تمام کارکترهای Whitespace مثل Carriage Return و Line Feed و Space و Tab و... رو معادل Space میدونه. برای رفع این مشکل هم یا باید با nl2br کارکترهای NewLine رو تبدیل به تگ </br> کنید و یا اینکه متنتون رو داخل تگ <pre>...</pre> (مخفف Preserve Whitespaces) بگذارین تا کارکترهای Whitespace نادیده گرفته نشن.
موفق باشید.