在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 :(得分:3)
问题是你的数组变量插值。语法是
"$row[id]"
或
"{$row['id']}"
所以:
"<a href=\"$currentFile?rowID=$row[id]\">click here</a>"
请参阅http://php.net/manual/en/language.types.string.php#language.types.string.parsing。
答案 1 :(得分:3)
如果引用令人困惑,他们可以尝试使用heredoc语法:
echo <<< END_HTML
<a href="$currentFile?rowID=$row[id]">click here</a>
END_HTML;
...只需确保 END_HTML; 独立于一行,没有缩进且没有尾随空格。在这里,heredoc有点矫枉过正。但对于包含大量变量的较大HTML块,它比在任何地方转义引号要容易得多。
干杯
答案 2 :(得分:2)
将变量包含在{}
中,如{$currentFile}
和{$row['id']}
。
答案 3 :(得分: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']是一个整数。
答案 4 :(得分:1)
对于双引号内的命名数组,不应使用单引号:
echo "<a href=\"$currentFile?rowID=$row[id]\">click here</a>";
答案 5 :(得分:0)
为了清楚起见,我建议您在单引号中回显HTML代码,并在双引号中回显它们的标记。当其他人查看你的代码时,大量的转义引号使它看起来很复杂。
e.g
echo '<a id="testlink" alt="blabla" href="test.php?somevar='.$xy.'">Test</a>';