以下链接正常工作,除非变量$row["title"]
包含双引号(“)。在这种情况下,链接中省略了引号后的所有内容。
如何使链接包含双引号后的所有内容?
提前致谢,
约翰
echo '<td class="sitename2"><a href="http://www...com/.../comments/index.php?submission='.$row["title"].'">'.$row["countComments"].' COMMENTS</a></td>';
答案 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不接受空格中需要的+
。