用Phing提取字符串

时间:2011-01-07 17:23:37

标签: php build 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下运行。

感谢任何帮助。

1 个答案:

答案 0 :(得分: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>

我可能会在以后测试它。