2012-03-09 151 views
0

PHP創建一個鏈接:如何在PHP中的雙引號內使用單引號?

echo "<a href=\"$currentFile?rowID=$row['id']\">click here</a>"; 

這將引發一個錯誤:Parse error: parse error, expecting 'T_STRING' or 'T_VARIABLE' or 'T_NUM_STRING'。你怎麼能這樣做?

此外,混合單引號和雙引號以及轉義雙引號會降低可讀性並始終生成錯誤。有沒有更好的方法來用另一種語法創建引號,比如Ruby中的%Q()?

工作PHP 5.2.8。

+0

它不是必需的,但是這是我喜歡做你在做什麼:'回聲「click here」;' – Shea 2012-03-09 02:27:00

+0

同意,這樣一來它是由變量界定字符串清晰。 – Manhim 2012-03-09 02:31:10

+0

@andrewjackson - 我也是這樣做的,但我發現很難閱讀和容易出錯。 – 2012-03-09 02:31:21

回答

2

將變量括在{}中,像這樣{$currentFile}{$row['id']}

1

名爲陣列雙引號裏面,你不應該使用單引號:

echo "<a href=\"$currentFile?rowID=$row[id]\">click here</a>"; 
2

sprintf的是你的朋友了複雜的字符串與變量:

http://php.net/manual/en/function.sprintf.php

echo sprintf('<a href="%s?rowID=%d">click here</a>', $currentFile, $row['id']); 

這裏我假定$ currentFile是一個字符串(你可以進一步操縱字符串,或許用urlencode),$ row ['id']是一個整數。

3

如果引號會比較混亂,他們可以嘗試定界符:

echo <<< END_HTML 
    <a href="$currentFile?rowID=$row[id]">click here</a> 
END_HTML; 

...只是確保該END_HTML;本身就是一行,沒有縮進,也沒有尾隨空白。在這裏,heredoc是矯枉過正的。但對於具有大量變量的較大的HTML塊,它可能比在任何地方轉義引號容易得多。

PHP heredoc

乾杯

0

我建議你呼應的HTML代碼中的單引號和他們的爲了清楚的原因,雙引號標記。當其他人查看您的代碼時,大量的轉義報價使其看起來很複雜。

e.g

echo '<a id="testlink" alt="blabla" href="test.php?somevar='.$xy.'">Test</a>';