توابع sprintf() در PHP

مثال

بجای استفاده از علامت درصد (%)، یک متغیر به عنوان پارامتر ارسال کنید:

<?php
$number = 2;
$str = "Shanghai";
txt = sprintf("There are 쥕lion cars in %s.", $number, $str);
echo $txt;
?>

Run Examples

تعریف و استفاده

توابع sprintf() رشته‌ی فرمت‌بندی شده را به متغیر نوشته می‌کند.

arg1وarg2و++ پارامترها به ترتیب به نشانه‌های (%) رشته اصلی اضافه خواهند شد. این تابع به صورت مرحله‌ای اجرا می‌شود. در نشانه‌ی اول %، arg1، در نشانه‌ی دوم %، arg2، به همین ترتیب.

توضیحات:اگر نشانه‌ی % بیشتر از arg اگر پارامترها وجود داشته باشند، باید از جای‌گذار استفاده کنید. جای‌گذار در پس نشانه‌ی '%' قرار می‌گیرد و از数字 و '$' تشکیل شده است. به مثال 2 مراجعه کنید.

توجه:توابع مرتبط: printf()، vprintf()، vsprintf()، fprintf() و vfprintf()

عبارت

sprintf(format,arg1,arg2,arg++)
پارامتر توضیحات
format

ضروری. تعیین می‌کند که رشته و چگونه متغیرهای داخل آن فرمت‌بندی شوند.

ارزش‌های فرمت ممکن:

  • %% - بازگشت به یک نشانه‌ی درصد %
  • %b - عدد دودویی
  • %c - کاراکتر مرتبط با ارزش ASCII
  • %d - عدد اعشاری با علامت مثبت یا منفی (منفی، 0، مثبت)
  • %e - استفاده از شمارش معادله کوچک (مثلاً 1.2e+2)
  • %E - استفاده از شمارش معادله بزرگ (مثلاً 1.2E+2)
  • 誒دد اعشاری بدون علامت مثبت (بزرگتر یا برابر با 0)
  • %f - عدد اعشاری (تنظیمات محلی)
  • %F - عدد اعشاری (تنظیمات محلی نیست)
  • %g - کوتاه‌تر از %e و %f
  • %G - کوتاه‌تر از %E و %f
  • %o - عدد هشت‌ساعتی
  • %s - رشته
  • %x - عدد شانزده‌ساعتی (حروف کوچک)
  • %X - عدد شانزده‌ساعتی (حروف بزرگ)

ارزش‌های فرمت اضافی. ضروری است که در بین '%' و حرف قرار گیرند (مثلاً %.2f):

  • + (افزودن '+' یا '-' به ابتدای عدد برای تعیین مثبت یا منفی بودن آن. به طور پیش‌فرض، فقط اعداد منفی علامت‌گذاری می‌شوند و اعداد مثبت علامت‌گذاری نمی‌شوند)
  • ' (تعیین چیزی که به عنوان پرکننده استفاده شود، پیش‌فرض فاصله است. باید با تنظیم‌کننده عرض استفاده شود. مثلاً: '%x20s' (از 'x' به عنوان پرکننده استفاده می‌شود))
  • - (تنظیم چپ‌چینی ارزش متغیر)
  • [0-9] (تعیین عرض کمینه ارزش متغیر)
  • .[0-9] (تعیین تعداد اعداد اعشاری یا طول بیشترین رشته)

توضیحات:اگر از چندین ارزش فرمت بالا استفاده شود، باید به ترتیب بالا استفاده شوند.

arg1 ضروری. تعیین می‌کند که format پارامتر در نشانه‌ای اول % رشته.
arg2 اختیاری. تعیین می‌کند که format پارامتر در نشانه‌ای دوم % رشته.
arg++ اختیاری. تعیین می‌کند که format پارامترها در نشانه‌های % سوم و چهارم رشته.

جزئیات فنی

مقدار بازگشتی: برگرداندن رشته‌ی فرمت شده.
نسخه PHP: 4+

مثال‌های بیشتر

مثال 1

استفاده از مقادیر فرمت‌های %f:

<?php
$number = 123;
$txt = sprintf("%f",$number);
echo $txt;
?>

Run Examples

مثال 2

استفاده از نشان‌گر:

<?php
$number = 123;
$txt = sprintf("با دو اعشار:%1\$.2f
<br>بدون اعشار:%1\$u",$number);
echo $txt;
?>

Run Examples

مثال 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
?>

Run Examples

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>";
?>

Run Examples