PDA

View Full Version : حرفه ای: تابع تبدیل متن به عدد



aszasz
یک شنبه 02 تیر 1392, 17:13 عصر
سلام
من میخوام یه متن رو به عدد تبدیل کنم . من این کار رو با تابع intval انجام میدم اما مشکلم اینه که این تابع بیشتر از 2147483647 نمیگیره . از چه تابعی به جای این استفاده کنم

MMSHFE
دوشنبه 03 تیر 1392, 06:50 صبح
دوست گرامی، نوع int توی زبان PHP یک ساختار 32 بیتی هست یعنی کلاً 32^2 حالت رو پشتیبانی میکنه که میشه 4,294,967,296 عدد که نصفش مربوط به اعداد منفیه و نصف دیگه برای اعداد مثبت یعنی کلاً از 2,147,483,648- تا 2,147,483,647 رو میتونید ذخیره کنید (از اعداد مثبت، 1 واحد بخاطر صفر که جزوشون محسوب میشه کم میشه). فعلاً راه حل استانداردی برای دورزدن این محدودیت وجود نداره ولی میتونید از راههای جایگزین استفاده کنید. مثلاً اگه میخواین هرچی غیر از عدد توی رشته وارد شده رو حذف کنید، از کد زیر استفاده کنید:

$string = preg_replace('#[^\d]#', '', $string);

Tarragon
دوشنبه 03 تیر 1392, 10:19 صبح
دوست گرامی، نوع int توی زبان PHP یک ساختار 32 بیتی هست یعنی کلاً 32^2 حالت رو پشتیبانی میکنه که میشه 4,294,967,296 عدد که نصفش مربوط به اعداد منفیه و نصف دیگه برای اعداد مثبت یعنی کلاً از 2,147,483,648- تا 2,147,483,647 رو میتونید ذخیره کنید (از اعداد مثبت، 1 واحد بخاطر صفر که جزوشون محسوب میشه کم میشه). فعلاً راه حل استانداردی برای دورزدن این محدودیت وجود نداره ولی میتونید از راههای جایگزین استفاده کنید. مثلاً اگه میخواین هرچی غیر از عدد توی رشته وارد شده رو حذف کنید، از کد زیر استفاده کنید:

$string = preg_replace('#[^\d]#', '', $string);
سلام
آقای شهرکی می شه از
$int = (int)$string; استفاده کرد؟
اگر می شه می شه در موردش توضیح بدید؟
تشکر.

MMSHFE
دوشنبه 03 تیر 1392, 11:26 صبح
میشه استفاده کرد ولی در این روش، اگه رشته با عدد شروع نشه، صفر برمیگردونه و اگه با عدد شروع بشه، تا هرجا که عددی باشه، جدا میکنه و بقیه رو نادیده میگیره (حتی اگه توی بقیه رشته، دوباره عدد ظاهر شده باشه).