1

我有一个<select>HTML 表单中的对象,其中一个<option>s 的值为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

4 回答 4

3

您不能使用反斜杠转义 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;'
于 2013-01-29T18:19:04.650 回答
0

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

测试.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>

测试.php

<?php

echo $_POST['test'];

在浏览器中输出

Test's for/ chars
于 2013-01-29T18:27:33.853 回答
0
<option value="Test's for/ chars">TEST'S FOR/ CHARS</option>

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

于 2013-01-29T18:14:29.207 回答
0

你能把 ' 改成 & #39;

<option value="Test&#39;s for/ chars">TEST&#39;S FOR/ CHARS</option>
于 2013-01-29T18:18:20.697 回答