اعتبارسنجی بر اساس تعداد کاراکتر در لاراول

من با استفاده از validation برای مواردی اعتبار سنجی قرار دادم. یکی از این محدودیت ها تعداد کاراکتر هست که با استفاده از دستور min:1000  گفتم که حداقل باید 1000 کاراکتر باشه ولی برای زبان فارسی مشکل داره و درست حساب نمیکنه این رو هم بگم که من ادیتور هم دارم  TinyMCE 

برچسب ها:
پرسیده شده در: 1 ماه قبل
آمار بازدید: 144
0

وقتی شما از ادیتورهای wysiwyg در لاراول استفاده می کنید، به هنگام ذخیره سازی تمام تگ‌های HTML این ادیتور نیز ذخیره می شوند. بنابراین وقتی شما توضیحات را ارسال می کنید باید قبل از اعتبارسنجی با استفاده از دستور strip_tags تمام تگ‌های HTML را حذف کرده و سپس Validation را انجام دهید:

$description = strip_tags($request->description);
...

پس ابتدا باید اعتبارسنجی min را حذف کرده و به صورت اختصاصی این کار را انجام دهید. قبل از تمام مراحل اعتبارسنجی کدهای زیر را بنویسید.

// در این مرحله ابتدا تمام توضیحات را دریافت کرده و تگ ها را حذف می کنیم
$description = strip_tags($request->description);


// سپس بررسی می کنیم که آیا طول موردنظر در توضیحات هست یا خیر؟

if(strlen($description) < 100){
                throw ValidationException::withMessages(['description' => 'توضیحات شما کمتر از حد مجاز است.']);
            }

در کدهای بالا اگر توضیحات کاربر کمتر از ۱۰۰ کاراکتر بود خطای اعتبار سنجی به صفحه بازگردانده می شود. این خطا دقیقا مشابه همان خطای validation لاراول است.

ارسال شده در: 1 ماه قبل
masoudsalehi (1325)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای دارای 10 پاسخ صحیح دارای 10 پاسخ صحیح
1
ممنونم از راهنماییتون ولی من نمیخوام تگ های html رو حذف کنم چون نمایشش بد میشه 'description' =>'required|min:1000' چطور باید بنویسم که هنگام اعتبار سنجی تگ های html رو حساب نکنه. - saze20 در 1 ماه قبل
توضیحات تکمیلی به همراه کدها به پاسخ اضافه شد. - masoudsalehi در 1 ماه قبل
0

ممنون از راهنمایی این کد درست اجرا میشه تا وقتی که از enter  برای فاصله گزاری بین خطوط استفاده نشه برای رفع این مشکل باید چیکار کنم؟

الان من این رو وارد کردم:

  علی

محمد

که با فاصله ها 8 کاراکتر هست 

ولی دستور dd(strlen($description))  تعداد ۱۶ کاراکتر را نمایش می دهد. و برای عبارت زیر:

ali

ali

ali 

این حروف انگلیسی رو هم 13 نشون میده

ارسال شده در: 1 ماه قبل
saze20 (46)
0

برای اینکه فاصله ها را نادیده بگیرید باید ابتدا با استفاده از تابع  preg_replace در PHP یک عبارت باقاعده نوشته و تمام فواصل را حذف کنید. نمونه کد زیر این کار را انجام می دهد:

$str='سلام اینجا آکادمی روکسو هست';
$str = preg_replace('/[^أ-يA-Za-z !@#$%^&*()]/ui', '', $str);
echo $str;//سلاماینجاآکادمیروکسوهست
echo strlen($str);//23
ارسال شده در: 1 ماه قبل
masoudsalehi (1325)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای دارای 10 پاسخ صحیح دارای 10 پاسخ صحیح
جهت ارسال پاسخ ابتدا عضو سایت شوید.
اینستاگرام روکسو

روکسو در اینستاگرام

به جمع هزاران کاربر اینستاگرامی روکسو بپیوندید.