2014-01-08 79 views
2

我想在PHP中創建html內容併爲onclick事件添加了一個名爲uchat的函數。該函數採用一個名稱參數,該參數是一個字符串。轉義字符不按預期方式工作

象下面這樣:

$name = "Php string"; 

$echostr .= "<div onClick='uchat(\'$name\')'> 
      </div>"; 

但是,傳遞一個字符串值,就像被點擊的div時,這將導致語法錯誤。因爲單引號在單引號內。我試圖逃避它,但它仍然無法正常工作。

的錯誤是這樣的:

SyntaxError: illegal character 
uchat(\ 

我不知道如何逃脫一個字符串參數和我所遇到的這個問題太多次,請幫助,如果你有一個解決方案。

謝謝。

回答

2

逃逸單引號將與外部的衝突:

$echostr .= "<div onClick=\"uchat('$name')\"> 
      </div>"; 
1

嘗試這樣

$echostr .= "<div onClick='uchat(&quot;$name&quot;)'></div>"; 
1

這工作:

<?php 
$name = "Php string"; 

$echostr .= <<< EOF 
<div onClick="uchat('$name')"></div> 
EOF; 

echo $echostr; 
?> 

輸出:

<div onClick="uchat('Php string')"></div> 

爲避免轉義所有雙引號並使html代碼更具可讀性,您可以使用EOF

看到它的行動:http://ideone.com/vRCCVH

2

這裏有2點乾淨簡單的方式來做到這一點:

1.經典CONCAT

$name = "Php string"; 
    $str = "<div onClick=\"uchat('" . $name . "')\"></div>"; 
    print $str; 

2.使用的sprintfhttp://us3.php.net/manual/en/function.sprintf.php

$name = "Php string2"; 
    $str = sprintf("<div onClick=\"uchat('%s')\"></div>", $name); 
    print $str;