-1

英数字またはアンダースコアに基づいて、配列内のいくつかの値を抽出しようとしています。うまくいきません。これは私がスクリプトを提供しているものです:

...
  [183]=>
  string(23) "/games/boomerang_devils"
  [184]=>
  string(26) "/games/krushuna_waterfalls"
  [185]=>
  string(21) "/games/super_drift_3d"
  [186]=>
  string(34) "/games/around_the_world_in_80_days"
  [187]=>
  string(24) "/games/governor_of_poker"
  [188]=>
  string(21) "/games/shoot_on_sight"
...

コード:

if (preg_match('/\/games\/[a-zA-Z0-9_]/', $array['item'])) {
    // Add to DB
}

しかし、それはそれを拾っていません。誰かが私が間違っていることを見つけることができますか?

4

2 に答える 2

1

preg_match()$array変数では機能しません。文字列が必要です。したがって、リストをループして、各文字列をテストします。またはpreg_grep()、一致するエントリの配列をフィルタリングするために使用します。

それ以外は、数量詞を忘れました+

 /\/games\/[a-zA-Z0-9_]+/

おそらく、開始アンカー^$終了アンカーも対象にします。そして\w、あなたのキャラクターリストに取って代わることができます。

于 2012-11-16T03:18:12.917 に答える
0
[a-zA-Z0-9_] is one character only.

追加してキャラクターを繰り返す必要があります+

if (preg_match('/\/games\/[a-zA-Z0-9_]+/', $array)) 
{
    // Add to DB
}
于 2012-11-16T03:15:24.947 に答える