2011-01-07 69 views
0

提取字符串我有這樣的目錄結構:與Phing

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

我需要的是一個目錄結構是這樣的:

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

我想才達到與Phing(有phing)如下:

<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> 

就像你已經看到我得到像「file1.php」這樣的直接名字。我不知道如何削減「.php」來創建合適的目錄,因爲phing mappers不會在這裏工作。我也不知道如何複製XML文件。這必須是通用的,並在Windows XP下運行。

任何幫助表示讚賞。

回答

2

我沒有測試過這個,但應該可以用'PhpEvalTask​​'。

<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> 

我可能會在稍後測試它。