توابع sprintf() در PHP
مثال
بجای استفاده از علامت درصد (%)، یک متغیر به عنوان پارامتر ارسال کنید:
<?php $number = 2; $str = "Shanghai"; txt = sprintf("There are 쥕lion cars in %s.", $number, $str); echo $txt; ?>
تعریف و استفاده
توابع sprintf() رشتهی فرمتبندی شده را به متغیر نوشته میکند.
arg1وarg2و++ پارامترها به ترتیب به نشانههای (%) رشته اصلی اضافه خواهند شد. این تابع به صورت مرحلهای اجرا میشود. در نشانهی اول %، arg1، در نشانهی دوم %، arg2، به همین ترتیب.
توضیحات:اگر نشانهی % بیشتر از arg اگر پارامترها وجود داشته باشند، باید از جایگذار استفاده کنید. جایگذار در پس نشانهی '%' قرار میگیرد و از数字 و '$' تشکیل شده است. به مثال 2 مراجعه کنید.
توجه:توابع مرتبط: printf()، vprintf()، vsprintf()، fprintf() و vfprintf()
عبارت
sprintf(format,arg1,arg2,arg++)
پارامتر | توضیحات |
---|---|
format |
ضروری. تعیین میکند که رشته و چگونه متغیرهای داخل آن فرمتبندی شوند. ارزشهای فرمت ممکن:
ارزشهای فرمت اضافی. ضروری است که در بین '%' و حرف قرار گیرند (مثلاً %.2f):
توضیحات:اگر از چندین ارزش فرمت بالا استفاده شود، باید به ترتیب بالا استفاده شوند. |
arg1 | ضروری. تعیین میکند که format پارامتر در نشانهای اول % رشته. |
arg2 | اختیاری. تعیین میکند که format پارامتر در نشانهای دوم % رشته. |
arg++ | اختیاری. تعیین میکند که format پارامترها در نشانههای % سوم و چهارم رشته. |
جزئیات فنی
مقدار بازگشتی: | برگرداندن رشتهی فرمت شده. |
نسخه PHP: | 4+ |
مثالهای بیشتر
مثال 1
استفاده از مقادیر فرمتهای %f:
<?php $number = 123; $txt = sprintf("%f",$number); echo $txt; ?>
مثال 2
استفاده از نشانگر:
<?php $number = 123; $txt = sprintf("با دو اعشار:%1\$.2f <br>بدون اعشار:%1\$u",$number); echo $txt; ?>
مثال 3
نمایش تمامی مقادیر ممکن فرمتها:
<?php $num1 = 123456789; $num2 = -123456789; $char = 50; // کاراکتر ASCII 50 عدد 2 است // توضیح: مقدار فرمت "%%" کاراکتر درصد را برمیگرداند echo sprintf("%%b = %b",$num1)."<br>"; // عدد دو رقمی echo sprintf("%%c = %c",$char)."<br>"; // کاراکتر ASCII echo sprintf("%%d = %d",$num1)."<br>"; // عدد اعشاری با علامت echo sprintf("%%d = %d",$num2)."<br>"; // عدد اعشاری با علامت echo sprintf("%%e = %e",$num1)."<br>"; // عدد اعشاری علمی (با حروف کوچک) echo sprintf("%%E = %E",$num1)."<br>"; // عدد اعشاری علمی (با حروف بزرگ) echo sprintf("%鑾u",$num1)."<br>"; // عدد اعشاری بدون علامت (مثبت) echo sprintf("%鑾u",$num2)."<br>"; // عدد اعشاری بدون علامت (منفی) echo sprintf("%%f = %f",$num1)."<br>"; // عدد اعشاری (با توجه به تنظیمات محلی) echo sprintf("%%F = %F",$num1)."<br>"; // عدد اعشاری (بدون توجه به تنظیمات محلی) echo sprintf("%%g = %g",$num1)."<br>"; // کوتاهتر از %e و %f echo sprintf("%%G = %G",$num1)."<br>"; // کوتاهتر از %E و %f echo sprintf("%%o = %o",$num1)."<br>"; // هشتاد و یک رقمی echo sprintf("%%s = %s",$num1)."<br>"; // String echo sprintf("%%x = %x",$num1)."<br>"; // Hexadecimal Number (Lowercase) echo sprintf("%%X = %X",$num1)."<br>"; // Hexadecimal Number (Uppercase) echo sprintf("%%+d = %+d",$num1)."<br>"; // Positive Sign Indicator echo sprintf("%%+d = %+d",$num2)."<br>"; // Negative Sign Indicator ?>
Example 4
Demonstration of String Literals:
<?php $str1 = "Hello"; $str2 = "Hello world!"; echo sprintf("[%s]",$str1)."<br>"; echo sprintf("[%8s]",$str1)."<br>"; echo sprintf("[%-8s]",$str1)."<br>"; echo sprintf("[%08s]",$str1)."<br>"; echo sprintf("[%'*8s]",$str1)."<br>"; echo sprintf("[%8.8s]",$str2)."<br>"; ?>