قالب بندی اعداد و رشته ها

از متد ()printf هم می توان برای قالب بندی رشته ها و اعداد استفاده کرد. این متد بر اساس یک الگو و با استفاده از کاراکترهای خاصی که در جدول زیر آمده اند، قالب بندی را انجام می دهد. الگوی کلی قالب بندی رشته ها و اعداد به صورت زیر است :

printf(% [flags] [width] [.precision] conversion-character,argument)

در الگوی بالا اجزایی که در داخل کروشه هستند اختیاری می باشند. در حالت عادی الگو با علامت % شروع می شود و بعد از آن یکی از کاراکترهای جدول زیر می آید :

conversion-character کاربرد
b نمایش اعداد صحیح
c نمایش کاراکتر
d نمایش اعداد در مبنای ده (صحیح)
e نمایش اعداد اعشاری نمایی
f نمایش اعداد اعشاری
O نمایش اعداد مبنای 8
s نمایش رشته
U نمایش اعداد ده دهی مثبت
x نمایش اعداد مبنای 16 با حروف کوچک
X نمایش اعداد مبنای 16 با حروف بزرگ
%% چاپ علامت درصد

 

 
حال فرض کنید که می خواهیم یک عدد اعشاری را فرمت بندی کنیم :

printf("%f",34.789456);
34.789456

همانطور که مشاهده می کنید در مثال بالا از %f برای نمایش عدد اعشار استفاده کرده ایم. همین مثال ، مثال خوبی است که به شما نحوه استفاده از اجزایی که در داخل کروشه هستند را نشان دهیم. ابتدا کاربرد flag یا نشانه را می گوییم. نشانه هایی که بعد از علامت درصد می توان استفاده کرد در جدول زیر آمده اند :

نشانه کاربرد
'- فاصله یا عددی که بین این دو علامت قرار بگیرد در سمت چپ عدد یا رشته موردنظر ما قرار می گیرد.
'+ فاصله یا عددی که بین این دو علامت قرار بگیرد در سمت راست عدد یا رشته موردنظر ما قرار می گیرد.
0 تعدادی صفر که خودمان تعیین کرده ایم به سمت راست یا چپ نوشته یا عدد اضافه می کند
فاصله تعدادی فاصله که خودمان تعیین کرده ایم به سمت راست یا چپ نوشته یا عدد اضافه می کند

به کار بردن نشانه های بالا به تنهایی و بدون اینکه تعیین کنیم چه تعداد فاصله یا صفر می خواهیم به ابتدا یا انتهای عدد یا رشته اضافه کنیم بی معنی می باشد. در این صورت باید از جزء بعدی که width یا پهنا هست استفاده کنیم. [.precision] هم در صورتی که متغیر از نوع اعداد اعشاری باشد، برای تعیین تعداد ارقام اعشار، و اگر از نوع رشته باشد تعداد کارکترهایی که قرار است نمایش داده شوند را مشخص می کند. حال به مثال بر می گردیم. فرض کنید که می خواهیم سه رقم از ارقام بعد از ممیز عدد اعشار مثال بالا را نشان داده و قبل از بخش صحیح آن سه عدد صفر قرار دهیم یعنی : 00034.789 .

انجام این کار بسیار راحت است :

printf("%09.3f",34.789456);
00034.789

همانطور که در کد بالا مشاهده می کنید الگو با علامت % شروع می شود. سپس نشانه را می نویسیم که در اینجا 0 است. اما اینکه چرا عدد 9 را نوشته ایم دلیلش این است که 34.789 با احتساب ممیز آن برای نمایش نیاز به شش جای خالی دارد و چون قرار است که ما سه صفر هم قبل از عدد 34 قرار دهیم پس باید 9 جای خالی ایجاد کنیم. و اما [ 3. ] هم به معنای سه رقم اعشار است و f هم که برای نمایش اعداد اعشاری به کار می رود. فرض کنید که می خواهیم سه کاراکتر اول رشته Programming را نمایش دهیم، برای این منظور به صورت زیر عمل می کنیم :

printf("%.3s","Programming");
Pro

در زیر هم مثالهایی از نحوه استفاده از متد printf و کاراکترهای خاص آن آمده است :

 
چاپ یک رشته ساده

printf("Hello Welcome to PHP Programming");
Hello Welcome to PHP Programming

 
چاپ کاراکترهای کنترلی

printf("Hello Welcome to\t PHP Programming");
Hello Welcome to	 PHP Programming

همانطور که مشاهده می کنید در کد بالا استفاده از t\ باعث ایجاد فاصله بین رشته ها می شود.

 
چاپ متغیرها

printf("Addition of two Numbers : %d",sum);

 
قالب بندی چند قسمتی

printf("I Love %c%c%c %s",80,72,80,"Programming");
I Love PHP Programming

در کد بالا کاراکتر C جایگزین c% و رشته یا کلمه Programming جایگزین s% می شود.

 

قالب بندی اعداد اعشاری

printf("%' -12s%' -12s\n","Column 1","Column 2");      
printf("%' -12.5f%' .20f", 12.23429837482,9.10212023134);
Column 1    Column 2    
12.23430    9.10212023134000000000

اگر تعداد کاراکترهای یک رشته از تعدادی که ما برای قالب بندی آن استفاده کرده ایم کمتر باشد تعدادی فاصله در سمت چپ یا راست رشته قرار می گیرد. مثلا تعداد کاراکترهای Column 1 هشت عدد می باشد و ما برای قالب بندی و ایجاد فاصله در سمت راست آن %' -12 را به کار برده ایم. با این کار 4 فاصله در سمت راست رشته قرار می گیرد و باعث فاصله آن با رشته بعدی می شود.می توانیم به جای فاصله یک علامت دیگر مثلا * را به صورت %'*-12 قرار دهیم، که در این صورت چهار ستاره در سمت چپ رشته قرار می گیرد. حال اگر تعداد کارکترهای رشته بیشتر از تعداد باشد که ما تعیین کرده ایم، کل رشته یا عدد بدون هیچ گونه فاصله ای در سمت چپ یا راست، نمایش داده می شود. همین نکته در مورد مثال های زیر صدق می کند.
 
نمایش اعداد صحیح در قالب خاص

printf("%d\n",1234);
printf("%3d\n",1234);
printf("%6d\n",1234);
printf("%-6d\n",1234);
printf("%06d\n",1234);
1234
1234
--1234
1234--  
001234

 

نمایش رشته ها در قالب خاص

$str="Programming";

printf("%s\n",$str);
printf("%10s\n",$str);
printf("%15s\n",$str);
printf("%-15s\n",$str);
printf("%15.5s\n",$str);
printf("%-15.5s\n",$str);
Programming
Programming
----Programming
Programming----
----------Progr
Progr----------

در دو کد آخر خط های تیره در اصل فاصله هستند که برای روشن شدن موضوع آنها را به صورت خط تیره نمایش داده ایم.برای روشن شدن کاربرد اعداد منفی و مثبت بعد از علامت % فرض کنید که شما می خواهید بین دو رشته PHP و Programming چهار فاصله قرار دهید. این کار به دو صورت امکان پذیر است. یا بعد از کلمه PHP چهار فاصله قرار دهید :

printf("%-8s%s", "PHP","Programming"); 
PHP    Programming

که در مثال بالا 8- به معنای این است که 8 مکان ایجاد شود که چهار تا از آنها توسط کلمه PHP اشغال می شود و چهار تای دیگر به خاطر علامت منفی در سمت راست کلمه PHP قرار می گیرند.حالت دوم هم این است که در سمت چپ کلمه Programming چهار فاصله قرار بدهیم :

printf("%s%15s", "PHP","Programming");
PHP    Programming

که در این صورت باید عدد 15 را بنویسیم. چونکه کلمه Programming یازده حرفی است، پس چهار مکان دیگر به خاطر مثبت بودن علامت 15 در سمت چپ آن قرار می گیرند. نکته ای که فراموش شد و الان یادآور می شویم در مورد اعداد اعشار است. اگر تعدادی که ما برای نمایش رقم اعشار مشخص کرده ایم بیشتر از ارقام اعشار عدد باشد بسته به تعدادی که ما مشخص کرده ایم عدد صفر بعد از ارقام اعشار قرار می گیرد. مثلا در مثال زیر [.12] یعنی دوازده رقم اعشار نمایش داده شود و چون تعداد ارقام اعشار عدد 5 تا می باشد در نتیجه هفت عدد صفر بعد از آن نمایش داده می شود.

printf("value is %32.12f",32.33434);
value is                  32.334340000000

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.