我在函数及其参数中遇到单引号和双引号的问题。这是我的代码
$prev_page_arrow= "<span class='pagn_prev' onclick=\"send($where,'Page_{$this->name}=$prev&{$this->rppGet}{$this->query_string}#$this->anchor');\" >Prev</span>";
问题在于$where
函数中的send
参数。 $where
变量的值类似于
$where = purpose="buy" and city="cityname"
OR
$where = purpose='buy' and city='cityname'
我可以在$where
和single
引号中设置double
属性值。问题是当值在double quotes
时,它结束了函数参数。例如
$prev_page_arrow= "<span class='pagn_prev' onclick=\"send(purpose="buy",'Page_{$this->name}=$prev&{$this->rppGet}{$this->query_string}#$this->anchor');\" >Prev</span>";
此处的double
引号表示带参数的函数结束。同样,如果我使用single
引号,则表示参数结束。
如何解决?
答案 0 :(得分:1)
也许这会有用吗?
$prev_page_arrow= "<span class='pagn_prev' onclick='send(purpose=\"buy\", \"Page_{$this->name}=$prev&{$this->rppGet}{$this->query_string}#$this->anchor\");' >Prev</span>";
答案 1 :(得分:1)
我建议将“where”值放在data-*
属性中,而不是尝试将其嵌入到内联事件处理程序中。就此而言,您无论如何都不应该使用内联处理程序。
关键是,试试这个:
$prev_page_arrow="<span class='pagn_prev' data-where=\"".htmlspecialchars($where)."\"
onclick=\"send(this.getAttribute('data-where'),'Page_........');\">Prev</span>";