将任何标题转换为url slug并从url slug转换回title

Upv*_*ote 9 php string url-encoding slug

我想将博客条目的任何标题转换为用户友好的URL.我使用rawurlencode()来做到这一点,但它给了我很多奇怪的字符串,如%s.

该算法应该考虑像Ö,Ä等德国字符.我想从标题创建一个网址,并能够通过解码网址获得标题.

我尝试了一些代码:http://pastebin.com/L1SwESBn在其他一些问题中提供,但它似乎是一种方式.

例如 HÖRZU.de -> hoerzu-de -> HÖRZU.de

有任何想法吗?

Han*_*nes 7

你想创造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)