2

基本的に私がやりたいのはファイル名を置き換えることです

whatever-[xxx]-[xxx].[xxx]になりますwhatever-150-150.[xxx]

だから私が持っている場合:

aisuiuhviu123ounsciun-174-345.JPG になります aisuiuhviu123ounsciun-150-150.JPG

wuernicun-123-25.pngになりますwuernicun-150-150.png

これまでのところ、私は最後のビット(ファイル拡張子)を理解しています/(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG)/

しかし、数字の部分は本当に混乱しています。基本的に、ファイルは常に次のようになります。

[string]-[2-4 numbers]-[2-4 numbers].[original file extension]

いつの日か、正規表現のリファレンス全体を読むことになりますが、それは私を困惑させます。

4

2 に答える 2

1

私はあなたの質問を誤解するかもしれません..しかし、あなたが-[\d]+求めていることをするべきです。ダッシュ(-)の後に整数が続きます。次に、ダッシュと150に置き換える必要があります。変更しない場合は、拡張子を一致させる必要はありません。実際、必要なことを達成するために、数字とダッシュ以外のものを一致させる必要はありません。

于 2012-08-24T01:31:57.357 に答える
1

これでうまくいくと思います(ファイル名が適切な名前の変数に格納されていると仮定します)。

preg_replace("/([^-]+)-\d{2,4}-\d{2,4}\.(.+)/i", "$1-150-150.$2", $filename);

ここで何をしているの?見てみよう:

  1. 名前の最初の部分を。と一致させ([^-]+)ます。
  2. 次に、ダッシュを付け-ます。
  3. 次に、数字(2〜4桁の長さ):\d{2,4}
  4. 次に別のダッシュ:-
  5. 次に別の番号:\d{2,4}
  6. 次に、リテラルドット:\.
  7. 次に、ファイル拡張子(これは何でもかまいません):(.+)

手順1と7でキャプチャグループを使用しているため、これらの値を置換に使用できることに注意してください。正規表現を学ぶことは有益です。それらは強力なツールです。

于 2012-08-24T01:33:01.957 に答える