Pass a percent (%) sign in a url and get exact value of it using php

前端 未结 2 2035
闹比i
闹比i 2020-12-03 04:31

I am trying to pass percent (%) sign in url like

%B6011000995504101^SB

but when I echo, it returns

♦011000995504101^SB


        
相关标签:
2条回答
  • 2020-12-03 05:02

    Answer:

    To send a % sign in a url, instead send %25.

    In your case, in order for php to see a percent sign, you must pass the character string %25B6011000995504101^SB to the server.

    Why:

    In URLs, the percent sign has special meaning. Is used to encode special characters. For example, & is the separator between parameters, so if you want your parameter to actually contain an &, you instead write %26. Because the percent sign is used to encode special characters, it is also a special character, and so if you want to actually send a percent sign, it must also be encoded. The encoding for a percent sign is %25.

    0 讨论(0)
  • 2020-12-03 05:13

    Before including a raw string in a URL it's a good idea to pass it through urlencode like so:

    <?php
    $original='%B6011000995504101^SB';
    
    $updated=urlencode($original);
    
    echo "<a href=\"some_page.php?$updated\">Link here</a>";
    ?>
    

    The receiving page will know what to do - give this example a try on your webserver:

    <?php
    
    if($_GET['argument']) {
        echo "<p>You passed in the argument &quot;$_GET[argument]&quot;</p>";
    }else {
        echo "<p>No argument was passed.</p>";
    }
    $original='%B6011000995504101^SB';
    
    $updated=urlencode($original);
    
    echo "<a href=\"urlencode.php?argument=$updated\">Link here</a>";
    ?>
    

    (name the file urlencode.php)

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