请帮我解决这个字符串格式化问题。运行时显示错误。
我需要调用一个java脚本函数AddHotel()与一些php变量从输入标签。在运行函数中的第一个参数时显示错误。它应该像onClick='AddHotel('divid', 'some_id', 'id',ids,rate)'
但在运行时显示为onClick='AddHotel(divid', 'some_id', 'id',ids,rate)'
$resort[] = "<div id='".$iiiddd."'><input id='hotel_day".$child_post->ID.$dyid."' name='hotel_day".$dyid."' type='radio' value='".$child_post->ID."' onclick='AddHotel(".$p.",'".$s."','".$psid."','".$dyid."','".$child_post->ID."',".$child_post->fields['price'].")' />
<input id='".$s."' name='expsel".$dyid."[]' type='hidden' value='' />".$child_post->post_title."<span>Rs:- ".$child_post->fields['price']."</span></div>";
要转义引号
$resort[] = "<div id='".$iiiddd."'><input id='hotel_day".$child_post->ID.$dyid."' name='hotel_day".$dyid."' type='radio' value='".$child_post->ID."' onclick='AddHotel(".$p.",''".$s."'',''".$psid."'',''".$dyid."'',''".$child_post->ID."'',".$child_post->fields['price'].")' />".$child_post->post_title."Rs:- ".$child_post->fields['price']."";
为所有人面临这样的问题:
你应该总是使用双引号表示HTML属性值例如:
<div attribute="value"><div>
为了在Javascript函数中传递变量,必须对string使用引号(最好是单引号)。如:
somethingAwesome('work', 'life', 1);
在PHP中嵌入HTML和Javascript时,一定不要把引号搞混了。
PHP字符串+ HTML元素:
$string = '<div></div>';
PHP字符串+带有属性的HTML元素:
$string = '<div id="awesome"></div>';
PHP字符串+带有属性的HTML元素+ Javascript函数:
$string = '<div id="awesome" onclick="somethingAwesome()"></div>';
PHP字符串+带属性的HTML元素+带参数的Javascript函数:
$string = '<div id="awesome" onclick="somethingAwesome('''.$string.''', '''.$string2.''', '.$integer.');"></div>';
您可以选择双引号或单引号,但遵循一种特定的方式将防止您混淆。
还记得缩进你的代码,即使在HTML字符串
的情况下您的问题解决方案:
$resort[] = '<div id="'.$iiiddd.'">
<input id="hotel_day'.$child_post->ID.$dyid.'" name="hotel_day'.$dyid.'" type="radio" value="'.$child_post->ID.'" onclick="AddHotel('''.$p.''', '''.$s.''', '.$psid.', '''.$dyid.''', '.$child_post->ID.', '''.$child_post->fields['price'].''')" />
<input id="'.$s.'" name="expsel'.$dyid.'[]" type="hidden" value="" />
'.$child_post->post_title.'
<span>Rs:- '.$child_post->fields['price'].'</span>
</div>';