我已经尝试过寻找答案,但首先要提出一个棘手的问题,就是这样。
考虑以下网址:
使用正确的正则表达式返回以下内容:
我正在尝试使用正则表达式来获取中心值。在所有情况下,我都知道字符串的第一个和最后一个字,即'hotels'(第一个)和'5star'(last)。
更新:我需要使用正则表达式,因为URL是通过Codeigniters URI路由器路由的。 URI的中心部分是为搜索结果动态构建的。
答案 0 :(得分:5)
既然你知道了第一个和最后一个词,你也知道它们的长度。
$out = substr($in,7,-6);
或更一般地说:
$out = substr($in,strlen($begin),-strlen($end));
编辑:如果正则表达式必需,只需使用/(?<=hotels-).*(?=-5star)/
答案 1 :(得分:3)
对于这种简单的情况,您可以使用explode()
$parts = explode('-', $string);
$wanted = array_slice($parts, 1, count($parts)-2);
更新:正则表达式。我仍然认为手动将字符串拆分成更容易。
~hotels-(.+)-5start~