在URL中使用双引号

时间:2010-08-27 10:03:01

标签: php html

以下链接正常工作,除非变量$row["title"]包含双引号(“)。在这种情况下,链接中省略了引号后的所有内容。

如何使链接包含双引号后的所有内容?

提前致谢,

约翰

echo '<td class="sitename2"><a href="http://www...com/.../comments/index.php?submission='.$row["title"].'">'.$row["countComments"].' COMMENTS</a></td>';

5 个答案:

答案 0 :(得分:10)

始终将urlencode用于可能需要包含任何异常内容的网址部分....

echo '<td class="sitename2">'.
  '<a href="http://www...com/.../comments/index.php?submission='.
  urlencode($row["title"]).
  '">'.
  $row["countComments"].' COMMENTS</a></td>';

如果您想进入标准,请参阅RFC3986,其中定义了安全或“未保留”字符,如下所示:

  

unreserved = ALPHA / DIGIT /“ - ”/“。” /“_”/“〜”

urlencode确保您希望包含在网址中的值符合这些标准

答案 1 :(得分:5)

确保您对网址参数值进行了urlencode。见urlencode

答案 2 :(得分:2)

. urlencode($row['title']) . '"> etc

答案 3 :(得分:2)

必须对网址中的参数值进行转义才能使网址生效。

所以而不是

$row["title"]

使用

urlencode($row["title"])

urlencode会将双引号转换为%22 ,这样您就可以避免错误的双引号结束链接的问题。

Jerome Wagner

答案 4 :(得分:1)

在我的情况下,urlencode没有帮助,我使用了urlencode ($var),浏览器中的结果是: 本地主机/ “aaMoldau ++奥斯+ DEM + Zyklus ++” 我的+ Vaterland “”/

浏览器说:

遇到错误

您提交的URI不允许使用字符。

这是我的MYSQL条目($ var):

aaMoldau - Aus dem Zyklus“Mein Vaterland”

更新

$ var的开头和结尾的引号是明确的,因为我插入了它们,但仍然存在错误。

(我不明白为什么urlencode在开头和结尾都会创建双引号。)

此外,应该删除“Mein”之前和Vaterland之后的双引号?

更新2: 我现在用过     str_replace将双引号与urlencode一起删除,这很好。但我以为我不需要str_replace?

此外,我读了另一篇堆栈文章,建议将我允许的uri字符更改为: $ config ['allowed_uri_chars'] ='+ = \ a-z 0-9~%。:_ - ';

CodeIgnite是问题,但现在已经解决了。奇怪的是CI不接受空格中需要的+