2012-03-09 120 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>';