کاربرد توابع Ctype

پرسیده شده
فعالیت 1124 روز پیش
دیده شده 506 بار
0

با عرض سللام و احترام ، و تشکر از استاد صالحی عزیز. 

میخواستم بپرسم ایا کاربرد این توابع فقط به این شکل هست که ما true , false برگردونیم (یعنی ببینیم که اون مورد در دیتای ما هست یا نه؟، ی چیزی مثل var_dump) یا نه ما میتونیم ازشون استفاده های دیگه ای هم در عمل بکنیم (مثلا وقتی نوع خاصی از دیتا رو پیدا کردیم عملگر دیگه ای رو روشون اجرا کنیم) و فقط اینجا استاد به این شکل مثال زدن برای تدریس و قابل رویت بودن برای ما؟؟ ببخشید میپرسم چون تا به حال پروژه عملی کار نکردم و insight ندارم که این توابع بعدا به چه شکل به کار ما میان , تشکر از آموزش های خوب و زحمات شما .’

فایل پیوست

Arash Sob
Arash Sob

5 فروردین 00

6
حذف شده

سلام.

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

در ادامه چنتا نمونه میارم:

* تابع ctype_digit اگر تمام کاراکتر ها عددی باشن true برمیگردونه.(رشته ی عددی)

<?php
echo ctype_digit('123') . PHP_EOL;  // true
echo ctype_digit(123) . PHP_EOL;    // false
echo ctype_digit('12.3') . PHP_EOL; // false
echo ctype_digit(12.3) . PHP_EOL;   // false
echo ctype_digit('-123') . PHP_EOL; // false
/**************/
$number = 123;
echo ctype_digit($number) ? 'true' : 'false' . PHP_EOL;           // false
echo ctype_digit((string) $number) ? 'true' : 'false' . PHP_EOL;  // true

* ما تابع is_numeric رو هم در PHP داریم. این تابع چک میکنه اگر مقدار داده شده یک عدد باشد مقدار true برمیگرداند.(عدد یا رشته ی عددی)

<?php
echo is_numeric('123') . PHP_EOL;  // true
echo is_numeric(123) . PHP_EOL;    // true
echo is_numeric('12.3') . PHP_EOL; // true
echo is_numeric(12.3) .   PHP_EOL; // true
echo is_numeric('-123') . PHP_EOL; // true

* تابع is_int رو داریم که چک میکند اگر ورودی عدد صحیح باشد مقدار true برمیگرداند.(عدد صحیح)

<?php
echo is_int('123') . PHP_EOL;  // false
echo is_int(123) . PHP_EOL;    // true
echo is_int('12.3') . PHP_EOL; // false
echo is_int(12.3) . PHP_EOL;   // false
echo is_int(-123) . PHP_EOL;   // true

با توجه به تفاوت خروجی توابع در موقعیت های مختلف پروژه شما تصمیم میگیرید از کدام تابع استفاده کنید.

فرضاً یکجا میخواید چک کنید عدد integer هست یا نه، بنابراین باید توجه داشته باشید که ctype_digit اعداد منفی رو بخاطر وجود کاراکتر منفی (-) خروجی false برمیگرداند و توجه داشته باشید که به اشتباه ازین تابع بجای is_int استفاده نشود.

 

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

یا اینکه میخواهید یک url را چک کنید و داخل url حتماً تمامی کاراکترهاش از حروف باشد.

 

بغیر از اینها در PHP تابع preg_match داریم. برنامه نویس میتونه با عبارت های Regex نوع داده ای که میخواد رو چک کنه و از توابع string و ctype و numeric و غیره هم استفاده نکنه.

 

یک جدول مقایسه ای بین is_int و ctype_digit داخل سایت stackoverflow اومده بود که پایین میذارمش:

┌──────────┬───────────┬────────────────┐
│          │  is_int:  │  ctype_digit:  │
├──────────┼───────────┼────────────────┤
│ 123      │  true     │  false         │
├──────────┼───────────┼────────────────┤
│ 12.3     │  false    │  false         │
├──────────┼───────────┼────────────────┤
│ "123"    │  false    │  true          │
├──────────┼───────────┼────────────────┤
│ "12.3"   │  false    │  false         │
├──────────┼───────────┼────────────────┤
│ "-1"     │  false    │  false         │
├──────────┼───────────┼────────────────┤
│ -1       │  true     │  false         │
└──────────┴───────────┴────────────────┘
فایل پیوست

محسن موحد

توسط

محسن موحد

6 فروردین 00