sscanf
تابع sscanf متن را طبق یک قالب (Format) می خواند و جدا می کند. سپس مقدارها را در متغیر (Variable)ها می ریزد. مثل برگه امتحان که الگو دارد و پاسخ ها را از همان الگو می خوانی.
تعریف و رفتار خروجی
sscanf(string, format, arg1, ...) رشته را طبق الگو می خواند. اگر فقط دو پارامتر بدهی، آرایه برمی گرداند. اما اگر متغیرها را هم بدهی، داده ها در همان ها ذخیره می شوند.
هشدار: اگر تعداد الگوها از متغیرها بیشتر باشد، خطا رخ می دهد. اگر الگوها کمتر باشند، متغیرهای اضافی NULL می شوند.
سینتکس و الگوهای رایج
نمادها: %% درصد، %s رشته، %d عدد صحیح علامت دار، %u عدد بدون علامت، %f اعشاری، %o اکتال، %x/%X هگز، %c کاراکتر.
می توانی بین % و حرف، گزینه هایی مثل پهنا و دقت بگذاری؛ مانند %.2f.
مثال 1: پارس رشته با عدد و واحد
<?php
$str = "age:30 weight:60kg";
sscanf($str, "age:%d weight:%dkg", $age, $weight);
// show types and values
var_dump($age, $weight);
?>
مثال 2: فقط دو پارامتر و خروجی آرایه
<?php
$str = "If you divide 4 by 2 you'll get 2";
$format = sscanf($str, "%s %s %s %d %s %d %s %s %c");
print_r($format);
?>
گام های عملی
- الگوی دقیق را بنویس.
- نماد درست برای هر بخش بگذار.
- sscanf را صدا بزن و نتیجه را بررسی کن.
نکته: برای چاپ قالبی از printf و برای ساخت رشته قالبی از sprintf استفاده کن.
جمع بندی سریع
- sscanf داده را از متن می خواند.
- دو پارامتر بدهی، خروجی آرایه است.
- با متغیرها، مقادیر در همان ها ذخیره می شوند.
- تعداد الگو و متغیر را هماهنگ کن.