0

我无法将 php 变量发布到另一个页面。该变量是从用户选择的下拉列表中检索的,如果它包含撇号,我只会在发布撇号之前获得部分。IE 如果我想发布“Cooper's Hawk”,我只会收到“Cooper”。如何正确转义,以便发布整个字符串?

这就是我所拥有的:

 echo '<form method="POST" action="advanced_search2.php">';
 $dropdown_english_name = "<select class = 'dropdown' name='english_name'>     <option>ALL</option>";


$query = "SELECT DISTINCT english_name FROM moth_sightings WHERE user_id ='$username'ORDER BY english_name asc";
                $result = mysql_query($query) or die(mysql_error());
                echo "<tr><td>English Name:</td>";
                while($row = mysql_fetch_assoc($result)) 
                    {
                       $dropdown_english_name .= "\r\n<option class = 'dropdown_active' value='{$row['english_name']}'>{$row['english_name']}</option>";
                    }
                $dropdown_english_name .= '\r\n</select>';
                echo '<td>' .  $dropdown_english_name .'</td></tr>';

在不同的页面上

$posted_value = ($_POST['english_name']);
 echo $posted_value;die;

因此,为了从上面的代码中澄清,发布的字符串是“cooper's hawk”,但回显的输出是“Cooper”。提前感谢您的任何提示。

4

2 回答 2

3

您可能已经通过将其生成为

 <select ...><option value='cooper's hawk'>...</option></select>
                                  ^---

使用该构造,您将获得一个提交的值cooper,并且选项标签以两个未知属性s和结束hawk。构建这样的 html 表单时要小心。您必须确保数据中嵌入的引号不会从根本上改变 html 的结构,例如使用混合引号或编码引号:

values="cooper's hawk"
values="cooper&#39;s hawk"

两者都可以。注意不同的引用风格。

于 2012-10-28T17:21:16.320 回答
1

你可以使用php函数addslashes($variable)

于 2017-11-10T20:03:45.533 回答