PHP回声改变文本?

时间:2013-09-23 22:03:12

标签: php echo

我是一名初学PHP程序员,我想知道我的代码出了什么问题。

以下是受影响地点的小摘录:

echo "<form action='?tab=4' name='toedit5' method='get'><input value='text' onblur='edit('toedit5')' /></form>";

在Chrome的开发者工具中,form元素完全消失,edit('toedit5')变为edit(' toedit5')

edit()函数无法执行。

这一行代码有什么问题吗?否则就是外面的代码弄乱了它。对不起,我没有包含它,但我不知道要包含什么。如果您需要更多信息,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:5)

您需要在引用的echo'd语句中转义 引号中的引号,如下所示:

<?php
    echo "<form action='?tab=4' name='toedit5' method='get'>";
    echo "<input value='text' onblur='edit(\"toedit5\")' />"; // escaped..!
    echo "</form>";
?>

当我开始时,它帮助我这样思考:浏览器如何知道onblur='edit('toedit5')'中的第二个单引号是关闭onblur语句还是打开参数?在此示例中,您的浏览器会将其看到的前两个引号配对,并将其分配给onblur属性,即仅限onblur='edit('

更新1:

使用上面的代码,我检查了我在Chrome开发人员工具中创建的一个快速PHP页面,并且能够看到以下内容(可供检查的表单):

Screen shot of developer tools

答案 1 :(得分:4)

你真的应该在HTML属性周围使用更标准的双引号,并在字符串周围使用单引号,在javascript方法调用中使用转义的单引号。像这样:

echo '<form action="?tab=4" name="toedit5" method="get"><input value="text" onblur="edit(\'toedit5\')" /></form>';