0

答えを探してみましたが、そもそも質問するのが難しい質問です。

次の URL を検討してください。

  • ホテル-ロンドン-ケンジントン-5star
  • ホテル-ロンドン-ケンジントン-メイフェア-5star
  • ホテル-ロンドン-5star

正しい正規表現を使用すると、次が返されます。

  • ロンドン-ケンジントン
  • ロンドン-ケンジントン-メイフェア
  • ロンドン

中央値のみを取得するために正規表現を使用しようとしています。私は文字列の最初と最後の単語をすべて知っています。つまり、'hotels' (最初) と '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 に答える