یکی از مرسومترین متد هایی که برای تولید اعداد تصادفی در PHP از اون استفاده میکنیم، متد
متد
متد
ولی با اینحال، هیچ یک از متد های
برای همین اگر نیاز به تولید اعداد رندوم cryptographic دارید، توصیه میکنم از متد های
💎 Channel: @DevelopixPHP
rand هستمتد
rand با وجود استفاده زیاد، تقریبا منسوخ و غیربهینه محسوب میشه و بهصورت drop-in میتونیم با متد جدیدتری بهاسم mt_rand جایگزینش کنیممتد
mt_rand از الگوریتم Mersenne Twister استفاده میکنه که حدودا 4 برابر سریعتر از الگوریتم مورد استفاده rand هستولی با اینحال، هیچ یک از متد های
rand یا mt_rand ایمن نیستند و به اصطلاح cryptographic secure نیستند، در اصل با پی بردن به seed اولیهشون میشه کل بازی رو در دست گرفتبرای همین اگر نیاز به تولید اعداد رندوم cryptographic دارید، توصیه میکنم از متد های
random_int و random_bytes استفاده کنید، که معمولا چندین برابر کندتر از جنریتور های بالا هستند، ولی امنیت بهتری دارند💎 Channel: @DevelopixPHP
👍12❤🔥2👎1🔥1
معمولا در PHP برای سر و کله زدن با String ها از متد های خانواده str استفاده میکنیم
مثلا برای گرفتن اندازه رشته، از متد
نکتهای که حائز اهمیت است، این است که استفاده از متد های str برای کاراکتر های Unicode و UTF توصیه نمیشود
چرا که متد های str به صورت خالی با byte سر و کار دارند
مثلا ایموجیها را در نظر بگیرید، ایموجیها معمولا 3 بایت حجم اشغال میکنند، به این علت که شکل نمایشی آنها با شکل نوشتاری آنها متفاوت است
مثلا
از جمله دلایلی که validate کردن length یا سر و کله زدن با String های یونیکدی و UTF ای را در PHP پیچیده میکند، نداشتن درک درمورد توابع MB است
به صورت خلاصه، اگر سر و کارتان با byte های یک String است، توابع str برای شما کفایت میکند
ولی اگر با متن های غیرساده سر و کار دارید، استفاده از متد های MultiByte یک ضرورت است، هرچند که چندین برابر کندتر است
💎 Channel: @DevelopixPHP
مثلا برای گرفتن اندازه رشته، از متد
strlen و برای پیدا کردن مختصات یک کاراکتر از strpos و به همین ترتیب برای سایر موارد نیز از سایر متد های خانواده str استفاده میکنیمنکتهای که حائز اهمیت است، این است که استفاده از متد های str برای کاراکتر های Unicode و UTF توصیه نمیشود
چرا که متد های str به صورت خالی با byte سر و کار دارند
مثلا ایموجیها را در نظر بگیرید، ایموجیها معمولا 3 بایت حجم اشغال میکنند، به این علت که شکل نمایشی آنها با شکل نوشتاری آنها متفاوت است
مثلا
strlen برای ایموجی 😒 معادل 3 است، ولی mb_strlen آن معادل 1 استاز جمله دلایلی که validate کردن length یا سر و کله زدن با String های یونیکدی و UTF ای را در PHP پیچیده میکند، نداشتن درک درمورد توابع MB است
به صورت خلاصه، اگر سر و کارتان با byte های یک String است، توابع str برای شما کفایت میکند
ولی اگر با متن های غیرساده سر و کار دارید، استفاده از متد های MultiByte یک ضرورت است، هرچند که چندین برابر کندتر است
💎 Channel: @DevelopixPHP
🔥12👍4👎1