如何动态传递一个包含撇号的href属性到php脚本中的锚标记?

r3i60tvu  于 2023-04-04  发布在  PHP
关注(0)|答案(2)|浏览(85)

此问题在此处已有答案

How to safely output HTML from a PHP program?(3个答案)
昨天关门了。
我有一个包含文件名的MySQL表和一个依赖于一些用户选择的查询,该查询在PHP脚本中返回这些文件名,比如在变量$filename中。我想创建一个锚标记,该标记带有指向这些文件名的href属性,以便用户可以下载存储在目录中的相关PDF文件。我试着这样编写代码:

echo "<a href='".$filename."' target='_blank'> my pdf file</a>";

但如果文件名包含撇号('),则链接在浏览器中显示为断开。我还尝试用反斜杠转义文件名中的撇号,但没有成功。此外,我尝试将包含锚标记的字符串用单引号分隔,但这不允许像$filename这样的内联代码。
然后我看到了这个SO问题Cannot pass variable with apostrophe in "a href" link,但它似乎不起作用。
在客户端javascript中构造href属性会有帮助吗?

pjngdqdw

pjngdqdw1#

也许像这样:

echo '<a href="' . $filename . '" target="_blank">my pdf file</a>';

或者:

echo "<a href='$filename' target='_blank'>my pdf file</a>";

或者使用urlencode(最可靠的):

echo '<a href="' . urlencode( $filename ) . '" target="_blank">my pdf file</a>';
0yg35tkg

0yg35tkg2#

如果你像这样颠倒引号和撇号会怎么样:

echo '<a href="'.$filename.'" target="_blank"> my pdf file</a>';

相关问题