使用预定义字符替换URL编码字符

时间:2012-10-15 15:42:46

标签: php url url-rewriting urlencode url-encoding

我试图愚弄动态生成或网址,以便没有丑陋的网址编码字符。我使用MySQL数据库中的数据生成url。

例如,我有标题字段,我通过用短划线( - )替换空格来生成网址。

domain.com/movie/the-terminator/

问题在于我无法预料到标题中可能出现的所有角色。这意味着生成的网址不会与浏览器栏中的实际网址匹配,因为它会被编码。

是否有任何可用的PHP代码替换?我不想手动操作,因为有很多字符要编码。我还希望替换其他几个字符,如括号“(”和“)”。这可能是一个特殊的php方法,用定义的值替换url编码的字符,如果是这样,请告诉我,因为这可以很容易地解决我的问题,谢谢。

1 个答案:

答案 0 :(得分:2)

查看此链接。 http://cubiq.org/the-perfect-php-clean-url-generator - “完美的PHP CLEAN URL GENERATOR”

示例:

setlocale(LC_ALL, 'en_US.UTF8');
function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[/_|+ -]+/", $delimiter, $clean);

    return $clean;
}