تابع PHP vfprintf()

مثال

متن به فایل نوشته خواهد شد:

<?php
$number = 9;
$str = "Beijing";
$file = fopen("test.txt","w");
echo vfprintf($file,"There are 쥕lion bicycles in %s.",array($number,$str));
?>

کد بالا به صورت زیر خروجی خواهد داد:

40

متن زیر به فایل "test.txt" نوشته خواهد شد:

There are 9 million bicycles in Beijing.

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

تابع vfprintf() رشته فرمت‌بندی شده را به جریان خروجی مشخص شده (مثلاً فایل یا پایگاه داده) می‌نویسد.

برخلاف fprintf()، پارامترها در vfprintf() در یک آرایه قرار دارند. عناصر آرایه به ترتیب در جای علامت‌های % در رشته اصلی قرار می‌گیرند. این تابع به صورت مرحله‌ای اجرا می‌شود. در اولین علامت %، اولین عنصر آرایه قرار می‌گیرد، در دومین علامت %، دومین عنصر آرایه قرار می‌گیرد و به همین ترتیب.

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

تابع‌های مرتبط:

نحوه استفاده

vfprintf(stream,قالب‌بندی,argarray)
پارامترها توضیح
stream ضروری. تعیین می‌کند کجا باید رشته نوشته یا خوانده شود.
قالب‌بندی

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

مقدارهای فرمت ممکن:

  • %% - بازگشت یک علامت درصد %
  • %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] (تعیین تعداد اعداد اعشاری یا طول بیشترین رشته)

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

argarray ضروری. یک آرایه با پارامترها، که باید در جاهای مشخص شده به جای آن‌ها قرار گیرند. قالب‌بندی در نشانه‌های % در رشته.

جزئیات فنی

مقدار بازگشتی: طول رشته نوشته شده را برمی‌گرداند.
نسخه PHP: 5+

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

مثال 1

نوشتن متن به فایل:

<?php
$num1 = 123;
$num2 = 456;
$file = fopen("test.txt","w");
vfprintf($file,"%f%f",array($num1,$num2));
?>

متن زیر به فایل "test.txt" نوشته خواهد شد:

123.000000456.000000

مثال 2

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

<?php
$number = 123;
$file = fopen("test.txt","w");
vfprintf($file,"With 2 decimals: %1$.2f
\nبدون اعداد اعشاری: %1$u",array($number));
?>

متن زیر به فایل "test.txt" نوشته خواهد شد:

با 2 عدد اعشاری: 123.00
بدون اعداد اعشاری: 123

مثال 3

استفاده از printf() برای نمایش تمامی مقادیر فرمت‌پذیر ممکن است:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // کاراکتر ASCII 50 است 2
// توضیح: مقدار فرمت "%%" درصد را برمی‌گرداند
printf("%%b = %%b <br>", $num1); // عدد دودویی
printf("%%c = %%c <br>", $char); // کاراکتر ASCII
printf("%%d = %%d <br>", $num1); // عدد اعداد اعشاری با نشانه
printf("%%d = %%d <br>", $num2); // عدد اعداد اعشاری با نشانه
printf("%%e = %%e <br>", $num1); // شکل عدد علمی (کوچک)
printf("%%E = %%E <br>", $num1); // شکل عدد علمی (بزرگ)
printf("%鑾u <br>",$num1); // عدد اعشاری بدون نشانه (مثبت)
printf("%鑾u <br>",$num2); // عدد اعشاری بدون نشانه (منفی)
printf("%%f = %f <br>",$num1); // عدد اعشاری (با توجه به تنظیمات محلی)
printf("%%F = %F <br>",$num1); // عدد اعشاری (بدون توجه به تنظیمات محلی)
printf("%%g = %g <br>",$num1); // کوتاهتر از %e و %f
printf("%%G = %G <br>",$num1); // کوتاهتر از %E و %f
printf("%%o = %o <br>",$num1); // عدد هشتادی
printf("%%s = %s <br>",$num1); // رشته
printf("%%x = %x <br>",$num1); // عدد شانزدهادی (کوچک)
printf("%%X = %X <br>",$num1); // عدد شانزدهادی (بزرگ)
printf("%%+d = %+d <br>",$num1); // نشانگر نشانگر (مثبت)
printf("%%+d = %+d <br>",$num2); // توضیح نشانگر (منفی)
?>

نمونه اجرا