2011-01-07 5 views
0

Ich habe eine Verzeichnisstruktur wie folgt aus:Extrahierung String mit Phing

plugins (directory) 
- file1.php 
- file1.xml 
- file2.php 
- file2.xml 
- file3.php 
- file3.xml 
... 

Was ich brauche, ist eine Verzeichnisstruktur wie folgt aus:

plugins (directory) 
- file1 (directory) 
-- file1.php 
-- file1.xml 
- file2 (directory) 
-- file2.php 
-- file2.xml 
- file3 (directory) 
-- file3.php 
-- file3.xml 
... 

Ich versuche, das achive mit Phing (hat phing) wie folgt zu:

<foreach param="file" absparam="absfilename" target="constructplugins"> 
    <fileset dir="${dir.root}/plugins/"> 
    <include name="*.php"/> 
    </fileset> 
</foreach> 

<target name="constructplugins" description="constructplugins"> 
<mkdir dir="${dir.tmp}/build/plugins/${file}" /> 
<copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${file}" /> 
</target> 

wie Sie bereits ich sehe einen direcory Namen wie „file1.php“ erhalten. Ich habe keine Ahnung, wie man die ".php" schneidet, um das richtige Verzeichnis zu erstellen, da Phing-Mapper hier nicht funktionieren. Und ich habe auch keine Idee, wie man die XML-Datei kopiert. Dies muss generisch sein und der Build läuft unter Windows XP.

Jede Hilfe wird geschätzt.

Antwort

2

Ich habe dies nicht getestet, aber es sollte mit 'PhpEvalTask' möglich sein.

<foreach param="file" absparam="absfilename" target="constructplugins"> 
    <fileset dir="${dir.root}/plugins/"> 
    <include name="*.php"/> 
    </fileset> 
</foreach> 

<target name="constructplugins" description="constructplugins"> 
    <php expression="preg_replace('/\\.[^.\\s]{3,4}$/', '', ${file})" returnProperty="filename"/> 
    <mkdir dir="${dir.tmp}/build/plugins/${filename}" /> 
    <copy file="${absfilename}" todir="${dir.tmp}/build/plugins/${filename}/${file}" /> 
</target> 

Ich könnte es später testen.