2014-01-07 191 views
1

我在PHP上讀取字符串文檔,發現單引號字符串幾乎可以完全「按原樣」顯示內容。變量和最轉義序列不會被解釋除了\」和\\雙引號內的單引號

我想顯示其地址的超級鏈接應該http://localhost/kk/insert.php/?id="4"

我嘗試下面的代碼

$id = 4; 
echo "<a href='http://localhost/kk/insert.php/?id=".$id."'>edit</a>"; 

但它顯示http://localhost/kk/insert.php/?id=4 (周圍沒有雙引號4)

不過,我用

完成了結果

我的問題是,單引號解釋\「轉義字符。那麼爲什麼第一個代碼不顯示雙引號(放在單引號內)。我錯過了什麼?

回答

3

你不應該在整數週圍有引號。您的網址應 http://localhost/kk/insert.php/?id=4 這是使用下面的代碼來實現:

$id = 4; 
echo '<a href="http://localhost/kk/insert.php/?id='.$id.'">edit</a>'; 
+0

我不知道這應該是什麼,但它是一個語法錯誤。你犯了一個錯誤? – Halcyon

+0

是的,我注意到了。正在修復 –

1

你處理兩個語言存在。 PHP正在執行回聲,並且PHP會解析/刪除引號。然後是'引號,它們用於HTML中以界定href屬性。

有了您的轉義第二個版本:

echo "<a href='http://localhost/kk/insert.php/?id=\"$display_result\"'>edit</a>"; 
    ^--php ^--html        ^^--escaped for PHP 

通常是"之前$display_result將終止你一直呼應PHP字符串。但是由於它已被轉義(\"),轉義告訴PHP將該報價視爲明文,而不是作爲報價。所以PHP字符串繼續,當這個代碼實際執行,並從服務器輸出,瀏覽器將真正看到:

<a href='http://localhost/kk/insert.php/?id="XXX"'>edit</a> 
+0

很好的解釋... – superphonic

0

當您第一個例子做,只是做:

$id = 4; 

echo "<a href='http://localhost/kk/insert.php/?id=\"".$id."\"'>edit</a>"; 
1

單引號與雙引號的解釋區別在於:

$a = 4; 
echo '$a' . "$a"; // $a4 
// '$a' just prints `$a` 
// "$a" prints `4`, it's interpretted 
// alternatively "\$a" prints `$a` 

至於逃離。如果你的字符串分隔符是單引號,那麼你不需要轉義雙引號,反之亦然。

$a = "don't"; 
// vs 
$a = 'don\'t'; 

$a = '"quote"'; 
// vs 
$a = "\"quote\"";