What does %S mean in PHP, HTML or XML?

前端 未结 5 837
無奈伤痛
無奈伤痛 2021-02-01 14:55

I\'m looking at Webmonkey\'s PHP and MySql Tutorial, Lesson 2. I think it\'s a php literal. What does %s mean? It\'s inside the print_f() function i

相关标签:
5条回答
  • 2021-02-01 15:36
    $num = 5; 
    $location = 'tree';
    
    $format = 'There are %d monkeys in the %s'; 
    echo sprintf($format, $num, $location); 
    

    Will output: "There are 5 monkeys in the tree."

    0 讨论(0)
  • 2021-02-01 15:41

    %s is a type specifier which will be replaced to valuable's value (string) in case of %s.

    Besides %s you can use other specifiers, most popular are below:

    d - the argument is treated as an integer, and presented as a (signed) decimal number.

    f - the argument is treated as a float, and presented as a floating-point number (locale aware).

    s - the argument is treated as and presented as a string.

    0 讨论(0)
  • 2021-02-01 15:42

    with printf or sprintf characters preceded by the % sign are placeholders (or tokens). They will be replaced by a variable passed as an argument.

    Example:

    $str1 = 'best';
    $str2 = 'world';
    
    $say = sprintf('Tivie is the %s in the %s!', $str1, $str2);
    echo $say;
    

    This will output:

    Tivie is the best in the world!

    Note: There are more placeholders (%s for string, %d for dec number, etc...)


    Order:

    The order in which you pass the arguments counts. If you switch $str1 with $str2 as

    $say = sprintf('Tivie is the %s in the %s!', $str2, $str1); 
    

    it will print

    "Tivie is the world in the best!"

    You can, however, change the reading order of arguments like this:

    $say = sprintf('Tivie is the %2$s in the %1$s!', $str2, $str1);
    

    which will print the sentence correctly.


    Also, keep in mind that PHP is a dynamic language and does not require (or support) explicit type definition. That means it juggles variable types as needed. In sprint it means that if you pass a "string" as argument for a number placeholder (%d), that string will be converted to a number (int, float...) which can have strange results. Here's an example:

    $onevar = 2;
    $anothervar = 'pocket';
    $say = sprintf('I have %d chocolate(s) in my %d.', $onevar, $anothervar);
    echo $say;
    

    this will print

    I have 2 chocolate(s) in my 0.

    More reading at PHPdocs

    0 讨论(0)
  • 2021-02-01 15:42

    The printf() or sprintf() function writes a formatted string to a variable. Here is the Syntax:

    sprintf(format,arg1,arg2,arg++)
    

    format:

    • %% - Returns a percent sign
    • %b - Binary number
    • %c - The character according to the ASCII value
    • %d - Signed decimal number (negative, zero or positive)
    • %e - Scientific notation using a lowercase (e.g. 1.2e+2)
    • %E - Scientific notation using a uppercase (e.g. 1.2E+2)
    • %u - Unsigned decimal number (equal to or greater than zero)
    • %f - Floating-point number (local settings aware)
    • %F - Floating-point number (not local settings aware)
    • %g - shorter of %e and %f
    • %G - shorter of %E and %f
    • %o - Octal number
    • %s - String
    • %x - Hexadecimal number (lowercase letters)
    • %X - Hexadecimal number (uppercase letters)

    arg1:

    • The argument to be inserted at the first %-sign in the format string..(Required.)

    arg2:

    • The argument to be inserted at the second %-sign in the format string. (Optional)

    arg++:

    • The argument to be inserted at the third, fourth, etc. %-sign in the format string (Optional)

    Example 1:

    $number = 9;
    $str = "New York";
    $txt = sprintf("There are approximately %u million people in %s.",$number,$str);
    echo $txt;
    

    This will output:

    There are approximately 9 million people in New York.

    The arg1, arg2, arg++ parameters will be inserted at percent (%) signs in the main string. This function works "step-by-step". At the first % sign, arg1 is inserted, at the second % sign, arg2 is inserted, etc.

    Note: If there are more % signs than arguments, you must use placeholders. A placeholder is inserted after the % sign, and consists of the argument- number and "\$". Let see another Example:

    Example 2

    $number = 123;
    $txt = sprintf("With 2 decimals: %1\$.2f
    <br>With no decimals: %1\$u",$number);
    echo $txt;
    

    This will output:

    With 2 decimals: 123.00
    With no decimals: 123

    Another important tip to remember is that:

    With printf() and sprintf() functions, escape character is not backslash '\' but rather '%'. Ie. to print '%' character you need to escape it with itself:

    printf('%%%s%%', 'Nigeria Naira');

    This will output:

    %Nigeria Naira%

    Feel free to explore the official PHP Documentation

    0 讨论(0)
  • 2021-02-01 15:58

    In printf, %s is a placeholder for data that will be inserted into the string. The extra arguments to printf are the values to be inserted. They get associated with the placeholders positionally: the first placeholder gets the first value, the second the second value, and so on.

    0 讨论(0)
提交回复
热议问题