0

これは少し奇妙な問題です。文字列から連続した 3 桁の整数を取得しようとしています。

今、私は以下のこのコードを使用してそれをうまくやっていると思いました...

preg_match_all('!\d+!', $image['title'], $integer); echo $integer[0][2];

しかし、今では一部の文字列で失敗しているようです。

これらの文字列で正常に動作します...

  1. TZR9000 スーパートループ 2014 001
  2. FZR モード 900 インパクト 2014 003 アクセサリー
  3. NICE750 デストロイヤー 2014 020

しかし、この文字列では失敗します...

  1. 月が好き 2013 Stand 010

他の整数と混同することなく、3桁の整数を正常に抽出する別の方法はありますか? これを行うには、巧妙なPHPが必要になると思います。

唯一の一貫したパターンは、常に 3 桁の前にスペースがあり、3 桁の後にピリオドまたはスペースがあることです。

4

3 に答える 3

2

正確な要件によって異なりますが、指定した例では、配列の最後の要素が必要なだけなので、次のように置き換えることができます。

echo $integer[0][2];

と:

echo end($integer[0]);
于 2013-11-05T17:13:55.900 に答える
1

最も堅実な方法は

preg_match_all('!(\d{3})(?=(?:(?!\d{3}).)*$)!m', $str, $integer);

ここで動作を確認してください:http://regex101.com/r/pJ0xN4

ここにも構造的な説明があります:

正規表現の視覚化

于 2013-11-05T19:10:18.553 に答える