1

私の質問は迅速かつ簡単です。

私はギャラリーを作成しており、グロブを使用してディレクトリからフルサイズの画像とサムネイルを取得しています。

サムネイル画像へのパスの変数があります:images/photo-strip/thumb/*.jpg

私は使用へのパスimages/photo-strip/thumb/*.jpgを減らしており、それをに保存しています*.jpgbasename()$filename

次に、フル サイズのイメージへのパスを次のように再構築します。$pathToFull = 'images/photo-strip/' . $filename;

親指フォルダー内の私のファイルは次のように名前が付けられています。th_*.jpgフルサイズの画像は*.jpg(正確に一致しますが、th はありません)。

<img>次に、タグ内のサムネイル パスとタグへのフルサイズ パスを使用して、HTML を配置するエコーがあります<a>

問題は、画像のファイル名に th_ が含まれているため、フルサイズの画像へのパスが間違っていることです。

フルサイズの画像のファイル名を修正できるように、th_からトリミングし$filenameて保存する方法はありますか?$full_filename

サムネイル画像の名前を簡単に変更して th_ を除外することができ、これで問題は解決しますが、ファイル名はそのままにしておくことをお勧めします。

編集:

必ずしも必要ではない 2 行のコードを削除するため、BCMCFC の方法を使用しています。

迅速な回答をありがとう!

4

6 に答える 6

1

パスを再構築する代わりに、次のようにプロセスを簡素化できるようです。

$img = str_replace('images/photo-strip/thumb/th_', 'images/photo-strip/', $originalImage);

あるいは単に:

$img = str_replace('thumb/th_', '', $originalImage);
于 2013-04-02T15:44:20.327 に答える
1

これはそれを行うための最もエレガントな方法です:-

$filename = 'th_myimage.jpg';
$pathToFull = 'images/photo-strip/' . preg_replace('/^(th_)?/', '', $filename);
// $filename would be 'myimage.jpg'

この正規表現パターンは、and が文字列の先頭にある場合、最初に出現したandのみを置き換えth_ます。

于 2013-04-02T15:52:44.170 に答える
0

これには、ディレクトリ内のファイルの名前をバッチで変更するための実装があります。

フォルダー内のファイルの名前を一括変更する - PHP

于 2013-04-02T15:45:12.537 に答える
0

「explode」を使用して「_」文字の文字列を配列に分割し、配列の後者の要素を取得できます。

$myarray = explode("_", $filename);
if(count($myarray)>1){
    $full_filename = $myarray[1];
}
于 2013-04-02T15:50:46.487 に答える