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

前端 未结 5 854
無奈伤痛
無奈伤痛 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: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

提交回复
热议问题