Upv*_*ote 9 php string url-encoding slug
我想将博客条目的任何标题转换为用户友好的URL.我使用rawurlencode()来做到这一点,但它给了我很多奇怪的字符串,如%s.
该算法应该考虑像Ö,Ä等德国字符.我想从标题创建一个网址,并能够通过解码网址获得标题.
我尝试了一些代码:http://pastebin.com/L1SwESBn在其他一些问题中提供,但它似乎是一种方式.
例如 HÖRZU.de -> hoerzu-de -> HÖRZU.de
有任何想法吗?
你想创造slu ,,但从经验我可以告诉你解码的可能性是有限的.例如"Foo - Bar"将成为"foo-bar",那么你怎么可能知道它一直不是"foo bar"或"foo-bar"?
或者你的slug中你不想要的字符如何,也没有像"`"那样的代表?所以你可以使用1对1的转换,rawurlencode()或者你可以创建一个Slug,这里是一个函数的例子 - 但正如我所说,没有可靠的解码可能 - 它本质上是因为你必须扔掉信息.
function sanitizeStringForUrl($string){
$string = strtolower($string);
$string = html_entity_decode($string);
$string = str_replace(array('ä','ü','ö','ß'),array('ae','ue','oe','ss'),$string);
$string = preg_replace('#[^\w\säüöß]#',null,$string);
$string = preg_replace('#[\s]{2,}#',' ',$string);
$string = str_replace(array(' '),array('-'),$string);
return $string;
}
Run Code Online (Sandbox Code Playgroud)