duanpi2033 2017-03-23 00:11
浏览 74
已采纳

PHP Echo输入值在斜线内部打破html斜杠系统

When I use different slashes in input value html slashes system is broking.

PHP

$val = "Brother's team say: " . '"Hello Man".';

HTML

<input value='<?php echo $val;  ?>' >

OUTPUT IS :

<input value='Brother's team say: "Hello Man".' >

EDIT:::

I change input to textarea. Textarea is working.

 <textarea> <?php echo $val; ?> </textarea>
  • 写回答

2条回答 默认 最新

  • doufocheng6233 2017-03-23 00:32
    关注

    Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings.

    http://php.net/manual/en/function.htmlspecialchars.php

    HTML is best written with double quote. Although single quotes can be used, sometimes the results are not as predicable.

    For example:

    <?php
    $val = "Brother's team say: " . '"Hello Man".';
    ?>
    <!-- testing single qouted values  -->
    <input value='<?php echo $val;  ?>' ><br>
    <input value='<?php echo htmlspecialchars($val);  ?>' ><br>
    <input value='<?php echo htmlentities($val);  ?>' ><br>
    <!-- testing double quoted values -->
    <input value="<?php echo $val;  ?>" ><br>
    <input value="<?php echo htmlspecialchars($val);  ?>" ><br>
    <input value="<?php echo htmlentities($val);  ?>" ><br>
    

    Will output the following:

    Brother

    Brother

    Brother

    Brother's team say:

    Brother's team say: "Hello Man".

    Brother's team say: "Hello Man".

    Only the last two are correct. The answer is to use either htmlentities or htmlspecialchars AND correct the html line:

    Old:

    <input value='<?php echo $val_double;  ?>' >
    

    Correct:

    <input value="<?php echo  htmlspecialchars($val_double);  ?>" ><br>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?