我正在做一个有文章的网站,我需要文章有“友好”的url,基于标题。
例如,如果我的文章标题是“文章测试”,我希望URL是http://www.example.com/articles/article_test。
但是,文章标题(与任何字符串一样)可以包含多个特殊字符,这些字符不可能直接放在我的URL中。比如说,我知道?或#需要被替换,但我不知道所有其他。
url中允许使用哪些字符?什么东西是安全的?
我正在做一个有文章的网站,我需要文章有“友好”的url,基于标题。
例如,如果我的文章标题是“文章测试”,我希望URL是http://www.example.com/articles/article_test。
但是,文章标题(与任何字符串一样)可以包含多个特殊字符,这些字符不可能直接放在我的URL中。比如说,我知道?或#需要被替换,但我不知道所有其他。
url中允许使用哪些字符?什么东西是安全的?
当前回答
我认为你正在寻找类似“URL编码”的东西——对URL进行编码,以便在网络上使用它是“安全的”:
这里有一个参考。如果你不想要任何特殊字符,只需删除任何需要URL编码的字符:
HTML URL编码参考
其他回答
URI的格式在RFC 3986中定义。详见3.3节。
我发现当我通过Ajax/PHP返回一个值到一个URL,然后由页面再次读取时,将我的URL编码为一个安全的URL非常有用。
PHP输出与URL编码器的特殊字符&:
// PHP returning the success information of an Ajax request
echo "".str_replace('&', '%26', $_POST['name']) . " category was changed";
// JavaScript sending the value to the URL
window.location.href = 'time.php?return=updated&val=' + msg;
// JavaScript/PHP executing the function printing the value of the URL,
// now with the text normally lost in space because of the reserved & character.
setTimeout("infoApp('updated','<?php echo $_GET['val'];?>');", 360);
unreserved = ALPHA / DIGIT / "-" / "."/ "_" / "~"
我认为你正在寻找类似“URL编码”的东西——对URL进行编码,以便在网络上使用它是“安全的”:
这里有一个参考。如果你不想要任何特殊字符,只需删除任何需要URL编码的字符:
HTML URL编码参考
从你所描述的上下文来看,我怀疑你实际上想要做的是一种叫做“SEO slug”的东西。最常见的做法是:
转换为小写 将除a-z和0-9之外的整个字符序列转换为一个连字符(-)(不是下划线) 从URL中删除“停止词”,即“a”、“an”和“the”等无意义的可索引词;谷歌用于广泛列表的“停止词”
举个例子,一篇名为“漫画中使用!@%$*来表示脏话”的文章会出现“用法-表示-脏话-漫画”。