We know that the sprintf () function writes formatted strings into a variable, and we often see this type of code. Next I will introduce how to use the sprintf () function, for more information, see.
Usage
Sprintf (format, arg1, arg2, arg ++)
Description
The format parameter is the conversion format. It starts with the percent sign ("%") and ends with the conversion character. The following possible format values:
• %-Return percent sign
• % B-binary number
• % C-Characters Based on ASCII values
• % D-Signed decimal number
• % E-resumable counting (for example, 1.5e + 3)
• % U-Unsigned decimal number
• % F-floating point number (local settings aware)
• % F-floating point number (not local settings aware)
• % O-octal values
• % S-string
• % X-hexadecimal (lowercase letter)
• % X-hexadecimal (uppercase letters)
Parameters such as arg1, arg2, ++ are inserted to the percent sign (%) in the main string. This function is executed step by step. In the first % symbol, insert arg1, at the second % symbol, insert arg2, and so on.
The following code is displayed on the open platform:
| The Code is as follows: |
Copy code |
|
$ PostObj = simplexml_load_string ($ postStr, 'simplexmlelement', LIBXML_NOCDATA );
$ FromUsername = $ postObj-> FromUserName;
$ ToUsername = $ postObj-> ToUserName;
$ Keyword = trim ($ postObj-> Content );
$ Time = time ();
$ MsgType = "text ";
$ TextTpl = "<xml>
<ToUserName> <! [CDATA [% s]> </ToUserName>
<FromUserName> <! [CDATA [% s]> </FromUserName>
<CreateTime> % s </CreateTime>
<MsgType> <! [CDATA [% s]> </MsgType>
<Content> <! [CDATA [% s]> </Content>
<FuncFlag> 0 </FuncFlag>
</Xml> ";
If (! Empty ($ keyword ))
{
$ ContentStr = $ this-> keyrep ($ keyword );
If (empty ($ contentStr ))
{
$ ContentStr = "you mean it, it's terrible to have no culture"; // you mean it, it's terrible to have no culture;
}
// $ ContentStr = @ iconv ('utf-8', 'gb2312', $ keyword );
$ ResultStr = sprintf ($ textTpl, $ fromUsername, $ toUsername, $ time, $ msgType, $ contentStr );
Echo $ resultStr;
} Else {
$ ContentStr = 'no culture is terrible, so you can't type it! '; // $ This-> keyrep ($ keyword );
// $ ContentStr = @ iconv ('utf-8', 'gb2312', $ keyword );
$ ResultStr = sprintf ($ textTpl, $ fromUsername, $ toUsername, $ time, $ msgType, $ contentStr );
Echo $ resultStr;
} |
The above is used in xml. Let's look at another example written by netizens.
| The Code is as follows: |
Copy code |
|
<? Php
/**
* Use the sprintf () function
* @ Date 2012-12-17
* @ Author cntnn11
*/
/**
* Manual definition: A function writes formatted strings to a variable.
* His identifiable format
* %-Percentage sign returned
* % B-binary number
* % C-ASCII characters
* % D-Signed decimal number
* % E-scientific notation (for example, 1.5e + 3)
* % U-Unsigned decimal number
* % F-floating point number (local settings aware)
* % F-floating point number (not local settings aware)
* % O-octal values
* % S-string
* % X-hexadecimal (lowercase letter)
* % X-hexadecimal number (uppercase letters)
* Sprintf ($ str, arg1, arg2, arg3 ...);
*/
/**
* 1.%
* Replace % with %
*/
$ TestStr = '%' in the test. What will it be replaced ';
Echo sprintf ($ testStr), '<br/> ';
//-> Test the parameter %. What will be replaced;
// Only one % is left
// It seems that only '%' is returned '. But how to use it in practical applications?
// I don't know either ~
Echo '<br/> /**
* 2.% B
* This parameter can only replace integer data. If it is a floating point type, it will only take the integer part. Ignored after decimal point
* If it is a non-integer data, 0 is returned.
*/
$ TestStr = 'I heard that % B will be replaced with the binary number. Is it true? ';
$ Arg = '10 ';
Echo sprintf ($ testStr, $ arg), '<br/> ';
//-> 1010; $ arg = 10; actually replaced!
//-> 101; $ arg = 4.5
//-> 0; $ arg = str/bool...
Echo '<br/>
/**
* 3.% c returns the ASCII code of the character encoding.
* TIP: [it does not return ASCII code]
* $ Arg receives an int value, that is, the ASCII numeric value, and returns the character corresponding to the value.
*/
$ TestStr = 'let's test % c: Can you return the ASCII code ';
$ Arg = '20140901 ';
Echo sprintf ($ testStr, $ arg );
//-> A; $ arg = 65;
//-> Z; $ arg = 122
Echo '<br/> /**
* 4.% d replace % d in a character segment with int type
* TIP: It can be any int type.
* If it is a floating point data, only the integer part will be replaced.
* If it is not a number, it is replaced with 0.
*/
$ TestStr = "this is an ID, ID: % d ,";
$ Arg = '-4 ';
Echo sprintf ($ testStr, $ arg );
//-> 4; $ arg = 4.5
//-> 0; $ arg = [a-zA-Zs];
Echo '<br/>
/**
* 5.% e scientific notation
* TIP: presents a long and long int integer data in scientific notation.
* Same as % d, this function will also ignore the decimal point, and replace any non-numeric data with 0
*/
$ TestStr = "I am very long and have N digits... % E ";
$ Arg = '20140901 ';
Echo sprintf ($ testStr, $ arg );
//-> 4.649846e + 14; $ arg = 464984646548645.64642449463699789789313
//-> 0.20.00e + 0; $ arg = asdfasdf;
Echo '<br/>
/**
* 5.% u-Unsigned decimal number
* Do not understand... If there is a negative number, his value does not know what it is.
*/
$ TestStr = "I am an unsigned decimal number... % U ";
$ Arg = '20140901 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 6.% f-floating point number (local settings aware)
* Is it the opposite of % d?
* This will return a floating point number with a fixed number of six digits after the decimal point.
* The same string is 0;
*/
$ TestStr = "what is the difference with that d? % F ";
$ Arg = '1970. 100 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 7.% F-floating point number (not local settings aware)
* Is it the opposite of % f? How is it no different from small f? No.
*/
$ TestStr = "what is the difference between the lower-case f? % F ";
$ Arg = '1970. 100 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 8.% o-Octal numbers
* Same as % d. Only an octal value is passed in the parameter.
*/
$ TestStr = "Replace the octal number with % o in decimal format ";
$ Arg = '8 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 9.% x-hexadecimal (lowercase letter)
* Same as % d/% o. Only the parameter is used to input a hexadecimal value of a lower-case letter.
*/
$ TestStr = "Replace the hexadecimal number with % o in decimal format ";
$ Arg = '456d12 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 10.% X-hexadecimal (uppercase letters)
* Same as % d/% o/% x. Only the parameter is passed in a hexadecimal value of an upper-case letter.
* It seems that % x % X is case-insensitive...
*/
$ TestStr = "Replace the hexadecimal number of uppercase letters with % o in decimal format ";
$ Arg = '456d12 ';
Echo sprintf ($ testStr, $ arg );
Echo '<br/>
/**
* 11.% s-string
* Replace % s with your input string
*/
$ String = "this is the sprintf string (% s) used for testing ). I spent % f yuan today. There are % d stations from West second flag to Zhichun Road. Work ";
$ Arg = '';
Echo sprintf ($ string, $ arg, 234, 10 );
Echo '<br/>
?>
|