PHP 字符串 sprintf()函数

PHP 字符串 sprintf()函数

sprintf()是PHP的内置函数,它将格式化的字符串写入变量中。它返回一个 格式化的字符串PHP 4及以上版本支持sprintf()函数。

sprintf()函数类似于printf()函数,但它们之间唯一的区别是sprint()将输出保存到字符串中,而不是像printf()函数一样在浏览器上显示格式化的消息。

注意:sprintf()可以与echo一起使用。sprintf()函数返回的格式化字符串由echo在浏览器上打印,而printf()直接将输出放在浏览器上。

语法

sprintf()的语法如下:

sprintf (format, agr1, agr2, arg3...) : string

在这里,arg1,arg2,arg3等是sprintf()的参数。这些参数将用百分号(%)符号插入到主字符串中。在每个%符号处,参数都会依次插入。

参数

format (必需)

这个参数是一个必需的参数,它指定了字符串并描述了如何格式化其中的变量。在其中,只有不包含%的简单字符会直接复制到结果字符串中,但带有%符号的字符会获取自己的参数。可能的格式值有:

Specifiers

参数 描述
%% 返回一个百分号(%)符号。
%b 参数被表示为二进制数。
%c 参数被作为整数对待,并以ASCII表示的字符呈现。
%d 参数被作为正整数对待,并表示为十进制数。
%e 以科学计数法表示,使用小写字母e,例如1.2e+2。精度修饰符用于指定小数点后要打印的位数。
%E 类似于e修饰符,但科学计数法使用大写字母E,例如1.2E+2。
%u 参数被作为整数对待,并表示为无符号整数。
%f 浮点数(与区域相关)
%F 浮点数(与区域无关)
%g 一般格式。
%G 类似于g修饰符,但使用E和F。
%o 以八进制数表示。
%s 参数被作为字符串对待,并呈现为字符串。
%x 以小写字母表示的十六进制数。
%X 以大写字母表示的十六进制数。

注意: c类型说明符忽略宽度和填充。

类型处理

Type Specifiers
string s
integer d, u, c, o, x, X, b
double G, g, E, e, F, f

有一些其他的格式值也存在,在百分号(%)和字母之间放置。(例如:%.2f)

以下是这些额外的格式值列表:

标志

标志 描述
- 在给定的字段中左对齐,默认情况下右对齐
+ 在数字前面加上正负号。默认情况下,负号仅放在负数前面。
(空格) 这是默认值,它用空格填充结果。
0 仅用零填充数字,并且对于s说明符,也可以用零进行右侧填充。
‘(字符) 用字符填充结果。

返回值

sprint()函数返回格式化字符串。

支持版本

这个函数受PHP 4及以上版本支持。

示例

下面给出了一些示例,以学习sprintf()函数的实际应用。

示例1: 简单的示例

<?php
format = 'It is the basic example of PHP String function.';res = sprintf(format,);
echores;
?>

输出:

It is the basic example of PHP String function.

示例2: 变量声明

<?php
quantity = 1;language = 'sprintf';
format = 'This is the  %dst example of the %s function.';res = sprintf(format,quantity, language);
echores;

echo '</br>';

echo sprintf("this function works with echo.");
?>

输出:

This is the 1st example of the sprintf function.
This function works with echo.

示例3: 参数交换

让我们看完整的示例3,以理解参数交换的概念。

<?php
num = 54;course = 'PHP training';
year = 2018;format = 'There are %d students in %s batch in the %d year.';
echo res = sprintf(format, num,course, $year);
?>

输出:

There are 54 students in PHP training batch in the 2018 year.

在这里,如果我们交换格式字符串中占位符的顺序,那么就会对我们造成问题。它与代码中的参数顺序不匹配。因此,占位符与参数顺序不匹配。让我们看看下面的代码-

<?php
num = 54;course = 'PHP training';
format = 'There are %d students in %s batch in the %d year';
echores = sprintf(format,course, num,year);
?>

输出:

There are 0 students in 54 batch in the 2018 year

所以,如果我们想保留代码不变,并且正确地指示占位符所指的参数,那么将其写成下面给出的代码:

<?php
num = 54;course = 'PHP training';
year = 2018;format = 'There are %2d students in %1s batch in the %3d year';
echores = sprintf(format,course, num,year);
?>

输出:

现在,输出与原始输出相同。

There are 54 students in PHP training batch in the 2018 year

示例4: 指定填充字符

<?php
    echo sprintf("%'.8d\n",1234);
    echo '</br>';
    echo sprintf("%'.08d\n",1234);
?>

输出:

现在,对于填充字符的上述代码的输出将会是这样的-

....1234 
00001234

示例5: 指定填充字符

<?php
    snum = 3259461827;
echo sprintf("%.2e",snum);        //Display scientific value 3.26e+9
echo '</br>';

echo sprintf("%'*6s\n", "Hi");      //Display ****Hi (It displays 6 character including asterisk  (*) before the text.)
echo '</br>';
echo sprintf("%'*-6s\n", "Hi");     //Display Hi**** (It displays 6 character including asterisk  (*) after the text.)
echo '</br>';

fnum = 125.235;
echo sprintf("%f\n",fnum);        //Display 125.235000 
echo '</br>';
echo sprintf("%.2f\n", fnum);      //Display 125.23 (It displays only 2 digits after decimal point.)
echo '</br>';
echo sprintf("%.0f\n",fnum);      //Display 125 only (It does not display the digits after decimal point.)
echo '</br>';
echo sprintf("%.8f\n", $fnum);      //Display 125.23500000 (It displays 8 digits after decimal point including 0.)
?>

输出:

现在,上述代码对于填充字符的输出将会是这样的-

3.26e+9
****Hi 
Hi**** 
125.235000 
125.23 
125 
125.23500000

PHP中sprintf()和printf()函数的区别

sprintf()和printf()函数的主要区别在于,sprintf()函数通过echo来显示文本,而printf()函数不需要echo来显示文本。我们将通过以下示例展示这个区别。

示例

<?php
str1 = 'We tried to printed on the browser directly using sprint() function.';
sprintf(str1);
format = 'This string is print on the browser with the help of echo function.';str2 = sprintf(format);
echostr2;
?>

输出:

在这里,我们可以看到变量$str1存储的文本并没有由sprintf()函数直接在浏览器中打印出来,所以我们使用echo来显示由str2变量存储的字符串。

PHP 字符串 sprintf()函数

现在,让我们看看printf()函数的工作方式。

<?php
str1 = 'This string is printed on the browser directly on the browser without using echo.';
printf(str1);
?>

输出:

PHP 字符串 sprintf()函数

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程