1

うーん..私はそれを機能させることができないことを意味します...だからここに私がしたことです..

$url = 'http://test/test/9244349';
$test = preg_match('#\d*#', $url, $matches);

配列(サイズ= 1)0=>文字列''(長さ= 0)

「9244349」をキャッチしたいのですが、なぜ動かないのかわかりません。

4

4 に答える 4

1

に置き換え*てみてください+。数字を一致させたい場合は、一致するパターンに意味がありません。ゼロの数字もありますか?

preg_match('/\d+/','http://test/test/9244349',$matches);
echo $matches[0];//output:9244349
于 2012-10-26T14:54:41.993 に答える
1

正規表現エンジンをプレイしてみましょう:

  • \d*任意の桁数を意味します。ゼロを含む。
  • 文字列の先頭から始めます。が表示されますh
  • h一致しません\d
  • ただし、-の繰り返しをゼロに一致させることもできます\d。したがって、一致する前の空の文字列。 h
  • 正規表現の終わりに到達し、一致するものが見つかりました。
  • 成果のロックが解除されました!
  • (もちろん、これはゼロ文字の一致ですが、それは問題ありません。Perl互換の正規表現は、文字列の前方にさらに一致する可能性がある場合でも、常に左端の一致を返します)。

したがって、他の投稿で述べられているように、をに変更し*+、少なくとも1桁を強制的に一致させてください。そうすれば、残りの数字が続きます。

を使用することもできますpreg_match_all()が、その場合、2つの数字以外の位置ごとに1つずつ、多くの空の一致が得られます。

于 2012-10-26T14:59:52.887 に答える
0

に変更*する+と機能します

于 2012-10-26T14:54:27.183 に答える
0

これはベース名です

echo basename($url);
于 2012-10-26T14:55:24.070 に答える