0

我已经尝试寻找答案,但首先要问这个问题很棘手,就这样吧。

考虑以下 URL:

  • 伦敦肯辛顿五星级酒店
  • 伦敦肯辛顿梅菲尔五星级酒店
  • 伦敦五星级酒店

将使用正确的正则表达式返回以下内容:

  • 伦敦-肯辛顿
  • 伦敦-肯辛顿-梅菲尔
  • 伦敦

我正在尝试使用正则表达式来获取中心值。在所有情况下,我都知道字符串的第一个和最后一个词,即“酒店”(第一个)和“5star”(最后一个)。

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

4

2 回答 2

5

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

$out = substr($in,7,-6);

或更一般地说:

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

编辑:如果需要正则表达式,只需使用/(?<=hotels-).*(?=-5star)/

于 2013-01-02T22:50:21.007 回答
3

对于这种简单的情况,您可以使用explode()

$parts = explode('-', $string);
$wanted = array_slice($parts, 1, count($parts)-2);

更新:正则表达式。我仍然认为手动将字符串分成几部分更容易。

~hotels-(.+)-5start~
于 2013-01-02T22:50:53.103 回答