Php 用Phing提取字符串

Php 用Phing提取字符串,php,build,phing,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.

我得到了如下目录结构:

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
...
<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>
我需要的是这样的目录结构:

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
...
<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>
我试图通过Phing(必须是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
...
<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”来创建正确的dir,因为phing映射器在这里不起作用。我也不知道如何复制xml文件。这必须是通用的,并且构建在windows xp下运行


非常感谢您的帮助。

我还没有测试过这一点,但使用“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>

我以后可能会去测试它