۱ رامهر
تابع ctype_graph
جامعه پی اچ پی ایجاد شده در ۱۳ خرداد ۱۴۰۲

سلام وقتتون بخیر

در تابع ctype_graph مواردی رو true میده که قابل نمایش باشن ولی چرا توی آؤایه من وقتی به عدد 220 میرسه false میده توی خروجیم ولی وقتی به 260 میرسه true میده ؟ ://// اصلا نمیتونم دلیلش رو متوجه بشم این هم کد من

$data = array('170.6',300,'176',"\\n\\t\\r" , "sal am" , 220,"izad$#@izad" , "izad123",);

foreach($data as $example){

  if(ctype_graph($example)){

    echo "true" . "
";

  }

  else {

    echo "false" . "
";

  }

}

سلام

تابع ctype_graph بررسی می‌کنه که آیا کلیه کاراکترهای رشته به عنوان نمادهای چاپی قابل نمایش هستن یا خیر. نمادهای چاپی شامل حروف الفبا، اعداد و نمادهای خاص همچون نقطه، خط تیره و غیره میشن.

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

اگر به نمونه‌هایی که ذکر کردید، دقت کنید، عدد 220 برابر با کاراکتر چینی "Ü" هست که در کد ASCII یک کاراکتر نماد چاپیه. به همین دلیل، ctype_graph برای این عدد خروجی true را برمی‌گردونه.

از طرف دیگه، عدد 260 بزرگتر از محدوده نمادهای چاپی ASCII است و به همین دلیل ctype_graph برای اون خروجی false رو برمی‌گردونه.

بهترین پاسخ
احمدرضا فاطمی کیا ۱۴ خرداد ۱۴۰۲، ۰۷:۲۱