PHP URL / slug接受字符

时间:2016-01-24 10:02:35

标签: php slug

我需要编写简单的路由系统,我只有一个问题。

当我有这样的url / slug时

/article/1/simple-article-1

那里应该允许哪些字符。

当然是字母,数字,' - ','/'和?

2 个答案:

答案 0 :(得分:1)

htaccess的:

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1  [L,QSA]

PHP:

if(isset($_SERVER['QUERY_STRING'])) {
    if(!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $_SERVER['QUERY_STRING'])) {
        return false;
    }

    $info = explode('/', $_SERVER['QUERY_STRING']);

    ....
}

答案 1 :(得分:0)

  

那里应该允许哪些字符。

通常slu are都是小写的,重音字符被英文字母的字母替换,空白字符被-_取代。通常删除诸如句号,逗号,问号,感叹号,撇号和引号之类的标点符号。它也可能被截断以保持合理的长度。

URI中可能具有特定含义的保留字符包括:!*'(),{{1 }},;:@&=+$/?#[。如果该字符与保留字符的目的冲突,则冲突数据必须在形成URI之前进行百分比编码。

从其组成部分生成URI后,如果要添加非字母,数字,]-._的字符,则应该总是percent-encoding它。

示例:

~