2011-04-24 39 views
1

我有一个网址,网址中的参数是人类有意义的。但转换后的url包含许多字符,如“%5B%5D”,我应该如何防止url被转换。如何防止url被转换?

+1

您正在使用哪种平台/语言? – Hossein 2011-04-24 10:37:46

+0

编程语言是php – David 2011-04-24 10:40:21

+0

我知道你在说什么,它和希伯来文中的参数一样。我想要一个解决方案以及... – fingerman 2011-04-24 11:09:19

回答

3

%NN是唯一正确的方式来表示非ASCII字符的网址。

你无法阻止它。如果客户不能(或不想)以“正确”的方式展示他们 - 他们将会被编辑。

1

实施例标题:

$title = 'Exämplé strîng ìnclüding spéciâl chàrãctêrs and (söme) [brackets].'; 

有效网址编码:

$title = 'Exämplé strîng ìnclüding spéciâl chàrãctêrs and (söme) [brackets].'; 
$title = urlencode($title) ; 
// Result: Ex%C3%A4mpl%C3%A9+str%C3%AEng+%C3%ACncl%C3%BCding+sp%C3%A9ci%C3%A2l+ch%C3%A0r%C3%A3ct%C3%AArs+and+%28s%C3%B6me%29+%5Bbrackets%5D. 

的进行urlencode()函数编码每一个非ASCII字符。
URL必须以这种方式编码才能正常工作。
幸运的你可以把它人类可读的东西是这样的:
(除去非ASCII字符/用下划线代替空格)

$title = 'Exämplé strîng ìnclüding spéciâl chàrãctêrs and (söme) [brackets].'; 
$title = iconv('UTF-8', 'US-ASCII//TRANSLIT', $title); 
$title = preg_replace('/[^A-Za-z0-9 ]/', '', $title); 
$title = str_replace(' ','_',$title); 
// Result: Example_string_including_special_characters_and_some_brackets 

总之,创建如下网址:

"http://www.site.com/blog.php?Article=Example_string_including_special_characters_and_some_brackets" 

而不是:

"http://www.site.com/blog.php?Article=Ex%C3%A4mpl%C3%A9+str%C3%AEng+%C3%ACncl%C3%BCding+sp%C3%A9ci%C3%A2l+ch%C3%A0r%C3%A3ct%C3%AArs+and+%28s%C3%B6me%29+%5Bbrackets%5D." 
+0

我的问题是如何使链接像“http://www.site.com/blog.php?Article=Example_string_including_special_characters_and_some_brackets”而不是“http://www.site。 COM/blog.php的?文章=防爆%C3%A4mpl%C3%A9 + STR%C3%AEng +%C3%ACncl%C3%BCding + SP%C3%A9ci%C3%A2L + CH%C3%A0r%C3% A3ct%C3%AArs +和+%28s%C3%B6me%29 +%5Bbrackets%5D“ – David 2011-04-24 11:46:40

0

Act最后,它确实关心渲染引擎,你不能逃避它。对于像壁虎这样的东西,尽管被转换,它可以以人类可读的形式显示。

0

您是在谈论何时显示网址,或者何时将其用作href值?

如果您希望它显示得很好,可以通过urldecode()运行它。根据其他答案,在href值内部,它必须看起来像这样,或者URL可以在某些浏览器和服务器中中断,所以最好让它看起来像这样。

+0

@David - 您是否设法修复它? – 2011-04-28 22:58:13