PHP: extraheer afzonderlijke delen van alle bestandsnamen van bestanden binnen een map

Ik zou in staat willen zijn om alle bestanden in een map (die het script bevat) te doorlopen en gedeelten van de naam uit te pakken en deze in CSV leesbaar te maken.

Van:

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

Naar:

ch-026, Metallica-Morphing Mauve-14pt

... of Excel of Numbers zou het kunnen lezen.


Op verzoek van een paar van jullie zal ik verduidelijken dat ik het tweede "-" streepje wil verwijderen en vervangen door een komma en spatie.

0
@AurelioDeRosa, hoe zou ik het in hemelsnaam eenvoudiger kunnen maken om het te begrijpen? Ik wil de naam ontleden in een tekenreeks gescheiden door een komma ... of is het beste voor CSV.
toegevoegd de auteur dcolumbus, de bron
Ik zou beginnen met het leren van de SPL-directory iteratorklasse en/of glob-opdracht php.net/glob
toegevoegd de auteur Itay Moav -Malimovka, de bron
Verbeter alstublieft uw vraag.
toegevoegd de auteur Aurelio De Rosa, de bron
Definieer bijvoorbeeld "gedeelte"! Hoeveel tekens is een "deel"?
toegevoegd de auteur Aurelio De Rosa, de bron
@AurelioDeRosa - Hoe wil je dat het OP de vraag verbetert?
toegevoegd de auteur Jared Farrish, de bron
Eigenlijk zou je explicieter kunnen zijn. Bijvoorbeeld. Zijn alle vermeldingen beginnen met de reeks 'ch-026'?
toegevoegd de auteur SteAp, de bron

2 antwoord

Eerste gebruik

$fileList = scandir( $directoryPath );

om de map te scannen. Loop dan als volgt

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

Gebruik ten slotte preg_match om items te koppelen. Over het algemeen:

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

In jouw geval een patroon zoals

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

zou het werk kunnen doen.

Gebruik ten slotte de informatie in $ overeenkomsten om het CSV-bestand te schrijven.

2
toegevoegd

U kunt "gedeelten van de naam extraheren en deze in CSV-leesbaar" maken om uw voorbeeld aan te passen met behulp van regexp:

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

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

0
toegevoegd