$ _POST / $ _ REQUEST不会读过撇号

时间:2013-01-29 18:08:31

标签: php html

我有一个<select>对象和HTML表单,其中一个<option>的值为Test's for/ chars

HTML:

<option value="Test's for/ chars">TEST'S FOR/ CHARS</option>

$ _ REQUEST和$ _POST都打印:

Test

我试图逃避没有效果的撇号。然后我会得到Test\

我正在使用php 5.4.6。

PHP - 一般化

while($row = mysql_fetch_array($result)):?>
    <option value="<?=$row['field']?>" <?=strtoupper($row['field'])?></option>
<?endwhile;?>

4 个答案:

答案 0 :(得分:2)

您无法使用反斜杠转义HTML引号。尝试在输出中使用htmlspecialchars($ string,ENT_QUOTES):

echo "<option value=\"" . htmlspecialchars($str) . "\">$str</option>";

此函数将特殊字符转换为适当的HTML实体:

The translations performed are:

'&' (ampersand) becomes '&amp;'
'"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
"'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set.
'<' (less than) becomes '&lt;'
'>' (greater than) becomes '&gt;'

答案 1 :(得分:0)

<option value="Test's for/ chars">TEST'S FOR/ CHARS</option>

需要在任何特殊车之前逃脱。 所以:<option value="Test\'s for/ chars">TEST'S FOR/ CHARS</option>

答案 2 :(得分:0)

你能否改变&#39;到&amp; #39;

<option value="Test&#39;s for/ chars">TEST&#39;S FOR/ CHARS</option>

答案 3 :(得分:0)

我已经尝试过PHP5.3.10的示例,它开箱即用。我使用了以下示例代码:

的test.html

<html>
 <head></head>
 <body>
  <form method="post" action="test.php">
  <select name="test">
    <option value="Test's for/ chars">TEST'S FOR/ CHARS</option>
  </select>
  <input name="submit" type="submit" />
  </form>
 </body>
</html>

test.php的

<?php

echo $_POST['test'];

浏览器输出

Test's for/ chars