我有一个<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;?>
答案 0 :(得分:2)
您无法使用反斜杠转义HTML引号。尝试在输出中使用htmlspecialchars($ string,ENT_QUOTES):
echo "<option value=\"" . htmlspecialchars($str) . "\">$str</option>";
此函数将特殊字符转换为适当的HTML实体:
The translations performed are:
'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
"'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>'
答案 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's for/ chars">TEST'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