Php URL中的正则表达式

Php URL中的正则表达式,php,regex,codeigniter,url-routing,Php,Regex,Codeigniter,Url Routing,我试着寻找答案,但这是一个很难问的问题 请考虑以下URL: 伦敦肯辛顿五星酒店 伦敦肯辛顿梅菲尔五星酒店 伦敦五星酒店 将使用正确的正则表达式返回以下内容: 伦敦肯辛顿 伦敦肯辛顿梅菲尔酒店 伦敦 我正在尝试使用正则表达式仅获取中心值。我知道所有情况下字符串的第一个和最后一个单词,即“hotels”(第一个)和“5star”(最后一个) 更新:我需要使用正则表达式,因为URL是通过Codeigniters URI路由器路由的。URI的中心部分是为搜索结果动态构建的。因为你知道第一个和最后

我试着寻找答案,但这是一个很难问的问题

请考虑以下URL:

  • 伦敦肯辛顿五星酒店
  • 伦敦肯辛顿梅菲尔五星酒店
  • 伦敦五星酒店
将使用正确的正则表达式返回以下内容:

  • 伦敦肯辛顿
  • 伦敦肯辛顿梅菲尔酒店
  • 伦敦
我正在尝试使用正则表达式仅获取中心值。我知道所有情况下字符串的第一个和最后一个单词,即“hotels”(第一个)和“5star”(最后一个)


更新:我需要使用正则表达式,因为URL是通过Codeigniters URI路由器路由的。URI的中心部分是为搜索结果动态构建的。

因为你知道第一个和最后一个单词,你也知道它们的长度

$out = substr($in,7,-6);
或者更一般地说:

$out = substr($in,strlen($begin),-strlen($end));

编辑:如果需要正则表达式,只需使用
/(?对于这种简单的情况,您可以使用

更新:一个正则表达式。我仍然认为手动将字符串拆分为片段更容易

~hotels-(.+)-5start~

在这种情况下比使用正则表达式要好得多!添加了更多信息,由于Codeigniter路由,它需要reg exp。正则表达式不是一根魔杖,你可以在每一个涉及字符串的问题上挥舞它。Codeigniter使用正则表达式来处理这种路由,并且是这种情况下唯一可能的答案。添加了更多信息,它是Codeigniter由于Codeigniter路由,需要注册exp。
~hotels-(.+)-5start~