2013-09-24 64 views
2

我在函數及其參數中存在單引號和雙引號問題。這裏是我的代碼在php中使用單引號引起的問題

$prev_page_arrow= "<span class='pagn_prev' onclick=\"send($where,'Page_{$this->name}=$prev&amp;{$this->rppGet}{$this->query_string}#$this->anchor');\" >Prev</span>"; 

的問題是,在send功能我$where參數。 $where變量值像

$where = purpose="buy" and city="cityname"

OR

$where = purpose='buy' and city='cityname'

我可以在這兩個singledouble報價作出$where屬性值。問題是當值在double quotes時,它結束了函數參數。例如

$prev_page_arrow= "<span class='pagn_prev' onclick=\"send(purpose="buy",'Page_{$this->name}=$prev&amp;{$this->rppGet}{$this->query_string}#$this->anchor');\" >Prev</span>"; 

這裏的double引號裝置,具有參數功能結束。同樣,如果我用single報價,它意味着參數結束。

如何解決?

+0

請避免在這種方式混合HTML和PHP。使用「.addslashes($ where)」。也許? –

+0

我有沒有解決方法? ;) –

+0

我編輯了第一條評論。基本上,創建由其他字符串變量構成的字符串變量並不是一個好主意,其他字符串變量也由其他變量組成。太髒了 –

回答

1

我建議把你的「其中」價值data-*屬性中,而不是試圖將它嵌入到一個內嵌的事件處理程序。對於這個問題,你不應該使用內聯處理程序。

的一點是,試試這個:

$prev_page_arrow="<span class='pagn_prev' data-where=\"".htmlspecialchars($where)."\" 
    onclick=\"send(this.getAttribute('data-where'),'Page_........');\">Prev</span>"; 
+0

完美。這適用於我!謝謝 –

1

也許這會工作?

$prev_page_arrow= "<span class='pagn_prev' onclick='send(purpose=\"buy\", \"Page_{$this->name}=$prev&amp;{$this->rppGet}{$this->query_string}#$this->anchor\");' >Prev</span>"; 
+0

嗯,聽起來不錯。讓我試試看。 –