【问题标题】:partially string token replacement in PHPPHP中的部分字符串令牌替换
【发布时间】:2013-09-22 00:35:38
【问题描述】:

我正在尝试为我自己的框架创建一个路由器,假设我有一个这样注册的路由

$f->addRoute("/note/$1/edit/$2", "/note/edit/$1");

这告诉路由器,对于给定的字符串,如 /note/2/edit/some/non/sense/url 转换为 /note/edit/2 我该怎么做!?

我已经为此工作了几个小时,但我找不到任何正则表达式!

我会很感激这里的任何帮助。

【问题讨论】:

  • 我们怎么知道你自己的路由器结构?一般来说,特殊情况应该存储在某个地方,并为某些路由器指定异常路由规则(可以是config/DB,甚至可以直接传递数组)
  • 我的路由器结构相信没必要知道!我要问的是如何将“/note/$1/edit/$2”之类的字符串转换为“/note/edit/$1”,这是一个无结构问题,要了解我的路由器结构,请参阅github.com/dariushha/zinux

标签: php regex string replace converter


【解决方案1】:
preg_replace('|^/note/(\d+)/edit/.*$|', '/note/edit/$1', '/note/2/edit/some/non/sense/url');

基本上,您必须注意以下几点:

  • 您不想使用“/”作为正则表达式分隔符,除非您想转义正则表达式中的每个“/”,所以我使用了“|”以上
  • 我使用了 \d+ 表示“任何数字”,如果您在这里有非数字值,您可能想要使用 [^/]+ 表示“任何不是正斜杠的东西”

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 2017-07-14
    • 1970-01-01
    • 2016-02-14
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多