简化代码:
SELECT 'ok' WHERE '/articles/new/' ~ '^/articles/(?!new)([\w-]+)/$';
示例,我想要什么:
'/articles/new/' => ''
'/articles/new-york/' => 'ok'
'/articles/other-string/' => 'ok'
而且,有什么问题:
'/articles/new/' => ''
'/articles/new-york/' => '' /* Wrong */
'/articles/other-string/' => 'ok'
那么,我怎样才能只阻止这个词呢?
优化
在 PostgreSQL 数据库中,我有一个表 ( page
),它有列path, title, file, regex_path etc.
列中的值path
如下所示:
/
/articles/
/articles/:category-code/
/articles/:category-code/:article-code/
/articles/:category-code/:article-code/edit/
/articles/new/
/members/
/members/:username/
:
表示它是一个参数(PHP 根据 regex_path 获取名称和内容——第一个版本)
从外部(PHP)数据库获取一个值(URL)。例子:
/ /* Main page */
/articles/ /* List all article */
/articles/it/ /* List articles in IT category */
/articles/it/ipad-mini-2/ /* Article */
/articles/it/ipad-mini-2/edit/ /* Edit article */
/articles/new/ /* New article */
/members/ /* Member list */
/members/someone/ /* Member datasheet */
如何选择正确的行,其中值(URL)与路径匹配(最快的方式,没有正则表达式)?
例子
在: /articles/it/ipad-mini-2/
出:行,其中path
是:/articles/:category-code/:article-code/