Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.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
Javascript html输入字段中带双引号的字符串显示为&;引用_Javascript_Php_Html_Sql - Fatal编程技术网

Javascript html输入字段中带双引号的字符串显示为&;引用

Javascript html输入字段中带双引号的字符串显示为&;引用,javascript,php,html,sql,Javascript,Php,Html,Sql,我从sql获取数据,并使用php为每个条目的编辑按钮生成javascript。编辑界面使用表单中的文本输入。单击“生成的编辑”按钮时,此字段中的文本设置为等于sql中条目的名称 除名称包含双引号(“)外,这种方法在所有情况下都可以正常工作,在这种情况下,文本字段中的引号将替换为“.” php通用javascript如下所示: function editButton($suffix,$name) { echo "<button class=\"edit\" onclick=\"

我从sql获取数据,并使用php为每个条目的编辑按钮生成javascript。编辑界面使用表单中的文本输入。单击“生成的编辑”按钮时,此字段中的文本设置为等于sql中条目的名称

除名称包含双引号(“)外,这种方法在所有情况下都可以正常工作,在这种情况下,文本字段中的引号将替换为“.”

php通用javascript如下所示:

function editButton($suffix,$name)
{   
    echo "<button class=\"edit\" onclick=\"editMode$suffix()\">Edit</button>";
    echo "<script>
            <!-- 
            function editMode$suffix(){
                document.getElementById(\"title\").innerHTML = \"Edit Artist\"
                var main = document.getElementById(\"main\");

                main.style.display = 'none';

                var edit = document.getElementById(\"edit\");
                edit.style.display = 'block';     

                //Set the input of the edit interface to be equal to the current name
                document.getElementById(\"editInput\").value = \"$name\";
                document.getElementById(\"artEdit\").value = \"$name\";
            }       
            -->
        </script>"; 
}
函数编辑按钮($suffix,$name)
{   
回应“编辑”;
回声“
"; 
}
$name变量在传递给函数之前通过htmlentities()进行清理。如果不这样做,带引号的条目的编辑界面甚至不会显示

我发现这听起来像是同一个问题,但没有解决方案():/


如果有人有一个解决方案,或者可以指出我所做的一些愚蠢的事情导致了这一点,我将非常感激。在这一点上,我将不得不禁用双引号的数据库条目并限制为单引号。

只需将JavaScript部分中的所有双引号更改为单引号,然后在
$name
variab上使用乐:

function editButton($suffix, $name)
{
    $name = addslashes( html_entity_decode($name) );
    echo "<button class='edit' onclick='editMode$suffix()'>Edit</button>";
    echo "<script>
        <!-- 
        function editMode$suffix() {
            document.getElementById('title').innerHTML = 'Edit Artist'
            var main = document.getElementById('main');

            main.style.display = 'none';

            var edit = document.getElementById('edit');
            edit.style.display = 'block';     

            //Set the input of the edit interface to be equal to the current name
            document.getElementById('editInput').value = '$name';
            document.getElementById('artEdit').value = '$name';
        }       
        -->
    </script>"; 
}
函数编辑按钮($suffix,$name)
{
$name=addslashes(html_entity_decode($name));
回应“编辑”;
回声“
"; 
}

*也被添加以将实体转换回它们的初始状态。考虑删除<代码> HTMLTENTIMSe()/<代码>,在这种情况下,可以移除<代码> HTML.EntYySqDeh()。来自上面的脚本。

太棒了,谢谢你是个救命恩人。我尝试过切换到单引号,但没有意识到addslashes函数,非常有用。奇怪的是,我尝试使用str_replace来做同样的事情,但没有成功。