Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布包含撇号的php变量_Php_Post_Escaping_Apostrophe - Fatal编程技术网

发布包含撇号的php变量

发布包含撇号的php变量,php,post,escaping,apostrophe,Php,Post,Escaping,Apostrophe,我无法将php变量发布到另一个页面。变量是从用户选择的下拉列表中检索的,如果它包含撇号,我只会得到撇号之前的部分。也就是说,如果我想发布“库珀之鹰”,我只会收到“库珀”。如何正确地转义它,以便发布整个字符串 这就是我所拥有的: echo '<form method="POST" action="advanced_search2.php">'; $dropdown_english_name = "<select class = 'dropdown' name='english

我无法将php变量发布到另一个页面。变量是从用户选择的下拉列表中检索的,如果它包含撇号,我只会得到撇号之前的部分。也就是说,如果我想发布“库珀之鹰”,我只会收到“库珀”。如何正确地转义它,以便发布整个字符串

这就是我所拥有的:

 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>';
因此,从上面的代码中可以看出,发布的字符串是“cooper's hawk”,但回显的输出是“cooper”。
提前感谢您提供的任何提示。

您可能因为将表单生成为而破坏了表单

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

这两种方法都有效。请注意不同的引用样式。

您可能已经破坏了表单,将其生成为

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

这两种方法都有效。请注意不同的引用样式。

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

很可能您使用单引号来包装选项的值属性,而不是在重复php中的值属性之前对其进行转义。没有“库珀之鹰”选择框中的选项。告诉我们这是如何产生的$过账价值;死吧不是完全有效的语法…好的,我已经添加了选项的详细信息,以便您可以看到它是如何生成的@马克B,回声;在我的帖子中是一个错误,但在原始代码中。感谢您的关注。很可能您正在使用单引号来包装选项的value属性,而不是在php中对其进行转义。选择框中没有“Cooper's Hawk”选项。告诉我们这是如何产生的$过账价值;死吧不是完全有效的语法…好的,我已经添加了选项的详细信息,以便您可以看到它是如何生成的@马克B,回声;在我的帖子中是一个错误,但在原始代码中。感谢您的发现。为了安全起见,请始终使用转义特殊字符。我认为这可能是问题所在,但我不确定如何修复它。任何提示。注意,我现在已经在上面的代码中包含了选项值的源。@user1658170:您得到了提示:使用htmlspecialchars转义特殊字符。为了安全起见,请始终使用转义特殊字符。我认为这可能是问题所在,但我不确定如何修复它。任何提示。注意,我现在已经在上面的代码中包含了选项值的源。@user1658170:您得到了提示:使用htmlspecialchars转义特殊字符。
values="cooper's hawk"
values="cooper&#39;s hawk"