原谅标题,这是我能想出来解决问题的最佳方式。
基本上,我在一些PHP代码中有一个html表单,但我需要在表单中包含javascript函数(带有指定的参数)。但我有一个问题,单引号和双引号标记escping PHP代码。见下文:
echo'<form id="create_booking_form" onsubmit="return false;">
<div>Student Name: </div>
<input id="students_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('students_name')" maxlength="30">
<div>Parents Name: </div>
<input id="parents_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_name')" maxlength="30">
<div>Parents Email Address: </div>
<input id="parents_email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_email')" maxlength="100">
<div>Booking Time: </div>
<input id="booking_time" type="text" onfocus="emptyElement('status')" onkeyup="restrict('booking_time')" maxlength="8">
<div>Comments / Questions: (max 255 characters)</div>
<input id="comments" type="text" onfocus="emptyElement('status')" onkeyup="restrict('comments')" maxlength="255">
<div>Password: </div>
<input id="password" type="password" maxlength="16">
<br /><br />
<button id="createbookingbtn" onclick="createbooking()">Submit your booking</button>
<span id="status"></span>
</form>
</div>
</div>';?>
我的问题是例如:onkeyup =“restrict('students_name')”
如果我使用单引号指定'student_name',它会从php代码中转义echo命令。如果我使用双引号它会转义restrict()函数...
我该怎么办?
非常感谢
有人能帮助我吗?
答案 0 :(得分:5)
如果您的字符串是使用'
创建的,则可以通过转义'
来打印\'
个字符,如果它是使用"
创建的,然后你可以通过将它转发到\"
来打印它。
然而,在你的情况下,我也不会这样做。我只是结束PHP标记并再次启动它:
?>
<form id="create_booking_form" onsubmit="return false;">
<div>Student Name: </div>
<input id="students_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('students_name')" maxlength="30">
<div>Parents Name: </div>
<input id="parents_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_name')" maxlength="30">
<div>Parents Email Address: </div>
<input id="parents_email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_email')" maxlength="100">
<div>Booking Time: </div>
<input id="booking_time" type="text" onfocus="emptyElement('status')" onkeyup="restrict('booking_time')" maxlength="8">
<div>Comments / Questions: (max 255 characters)</div>
<input id="comments" type="text" onfocus="emptyElement('status')" onkeyup="restrict('comments')" maxlength="255">
<div>Password: </div>
<input id="password" type="password" maxlength="16">
<br /><br />
<button id="createbookingbtn" onclick="createbooking()">Submit your booking</button>
<span id="status"></span>
</form>
</div>
</div>
<?php
但是当我希望HTML内容在变量中时呢?
只需使用输出缓冲区。
ob_start();
?>
<p>Some HTML</p>
<?php
$html = ob_get_clean();
答案 1 :(得分:4)
我会将javascript放在外部文件中,并让php将链接放到该文件中。
答案 2 :(得分:2)
在引号前放一个\来逃避:
echo'<form id="create_booking_form" onsubmit="return false;">
<div>Student Name: </div>
<input id="students_name" type="text" onfocus="emptyElement(\'status\')" onkeyup="restrict(\'students_name\')" maxlength="30">
等
答案 3 :(得分:0)
您可以通过在它们之前添加一个反斜杠来转义引号。