توابع 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>";
?>

