PHP:ディレクトリ内のファイルのすべてのファイル名の個々の部分を抽出する

私は、ディレクトリ内のすべてのファイル(スクリプトが入っているファイル)をループして、名前の一部を抽出し、それを読み込み可能なCSVに変換したいと考えています。

から:

ch-026-Metallic-Morphing Mauve-14pt.jpg

に:

ch-026, Metallica-Morphing Mauve-14pt

...またはExcelまたはNumbersがそれを読み取ることができます。


あなたのカップルからのリクエストで、私は2番目の " - "ダッシュを切り取り、カンマとスペースで置き換えることを明確にします。

0
追加された 編集された
ビュー: 1
@AurelioDeRosa、どうやって世界を理解するのが簡単になるの?私はコンマで区切られた文字列に名前を解析したいのですが...しかし、CSVには最適です。
追加された 著者 dcolumbus,
まず、SPLディレクトリのイテレータクラスおよび/またはglobコマンドphp.net/globを学習します。
追加された 著者 Itay Moav -Malimovka,
あなたの質問を改善してください。
追加された 著者 Aurelio De Rosa,
たとえば、 "部分"を定義します。 「部分」は何文字ですか?
追加された 著者 Aurelio De Rosa,
@AurelioDeRosa - あなたはどのようにOPに質問を改善したいですか?
追加された 著者 Jared Farrish,
実際には、あなたはもっと明白かもしれません。例えば。すべてのエントリーはシーケンス 'ch-026'で始まるのですか?
追加された 著者 SteAp,

2 答え

まず、

$fileList = scandir( $directoryPath );

ディレクトリをスキャンします。このようにループします

foreach( $fileList as $fileName ) {
 ...
}

最後に、 preg_match を使用してエントリを一致させます。一般的に:

$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, fileName, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

あなたの場合は、

$pattern = '/^ch-\d*-(.*)-\d*pt\.jpg$/';

仕事をするかもしれない。

最後に、$ matchesで提供された情報を使用してCSVファイルを作成します。

2
追加された

regexpを使ってあなたの例に合うように、「名前の一部を抽出してCSVで読むことができます」:

$csv_contents .= preg_replace('/^([^-]+-[^-]+)-(.+)\.jpg$/','\1, \2',$filename)."\n";

$filename may be obtained using Stefan Pantke's script.

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com