有谁知道如何用Phing在文件中查找和替换文本?用Phing查找替换文件中的文本
回答
最简单的方式实现这一目标用“传统”的工具是sed
:
sed -i 's/old/new/g' myfile.txt
而如果是基于Ant那么这应该帮助:http://ant.apache.org/manual/Tasks/replace.html
最简单的形式是<replace file="myfile.html" token="OLD" value="NEW"/>
。
如果你真的需要它,你可以运行的外部工具与蚂蚁作为http://ant.apache.org/manual/Tasks/exec.html解释说,这意味着,除其他事项外,你可以打电话从蚂蚁的sed的东西,如:
<exec executable="sed">
<arg value="s/old/new/g" />
<arg value="$MY_FILE" />
</exec>
您可以替换文本内部文件使用过滤器。过滤器用于其他文件操作任务,例如复制。
我相信过滤器背后的主要思想是您可以使用标记而不是实际值创建模板文件,然后将标记替换为复制过程的一部分。
快速示例:将数据库配置模板文件存储在模板目录中。然后,你把它复制到使用目标配置文件:
<copy file="templates/database.config.php.tpl" tofile="config/database.config.php" overwrite="true">
<filterchain>
<replacetokens begintoken="%%" endtoken="%%">
<!-- MySQL TOKENS -->
<token key="dbname" value="${db.mysql.dbname}" />
<token key="dbhost" value="${db.mysql.host}" />
<token key="dbport" value="${db.mysql.port}" />
<token key="dbuser" value="${db.mysql.username}" />
<token key="dbpassword" value="${db.mysql.password}" />
</replacetokens>
</filterchain>
</copy>
有很多可用的其他滤光器(例如正则表达式搜索和替换)的。 查看更多有关过滤器的文档中:http://phing.info/docs/guide/stable/chapters/appendixes/AppendixD2-CoreFilters.html
这应该是答案。 – 2015-01-02 08:49:52
我一直在寻找同样的事情,而且我发现,存在一个名为ExpandProperties过滤器,它允许以取代在复制文件的属性。比如我用它在Apache虚拟主机模板:
<target name="apache-config" description="Generates apache configuration">
<!-- Default value for Debian/Ubuntu -->
<property name="apache.vhost.dir" value="/etc/apache2/sites-available" override="false"/>
<copy file="${application.startdir}/docs/vhost.conf.tpl" todir="${apache.vhost.dir}" overwrite="true">
<filterchain>
<expandproperties/>
</filterchain>
</copy>
<echo message="Apache virtual host configuration copied, reload apache to activate it"/>
</target>
而且在模板文件
<VirtualHost *:80>
DocumentRoot "${application.startdir}/public"
ServerName ${apache.default.host}
<Directory "${application.startdir}/public">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
这样你不明确的列出所有需要更换的令牌,漂亮有用...
我用你的过滤器链,但与上面的人的反身任务。 – thescientist 2014-03-10 01:50:21
如果你不想复制文件和文件只需更换在你的文件驻留在当前文件夹的字符串,做一个reflexive task:
<reflexive>
<fileset dir=".">
<include pattern="*.js" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="SEARCH" replace="REPLACEMENT"/>
</replaceregexp>
</filterchain>
</reflexive>
谢谢!这个答案确实是最好的选择,尽管其他人在这一点上有更多的选票。这个任务应该如何完成,而不需要不必要的复制,并且在原生phing任务可用时使用exec任务。 – AlexG 2013-12-20 18:26:06
我用这对我phing build.xml文件
<exec command="find ./ -type f -name '*.php' | xargs sed -i 's|x--Jversion--x|${jversion}|g'" dir="${targetdir}/_package/${extname}.${package.version}" />
Acme公司给出的答案,是正确的。 如果您尝试将文件复制到自身以修改它,大声说出哟不能自我复制。
<reflexive file="./app/config/config.yml" tofile="./app/config/config.yml">
<filterchain>
<replacetokens begintoken="__" endtoken="__">
<token key="BUILD_VERSION" value="Replace Value" />
</replacetokens>
</filterchain>
</reflexive>
这对我很好。
- 1. 查找并替换文件夹中的多个文本文件
- 2. 查找和替换文本
- 3. 用文本文件中的查找字替换
- 4. 使用命令查找并替换文件中的文本
- 5. 查找并替换文本等文字
- 6. 查找并替换文本文件输出中的单词
- 7. 查找并替换多个文件中的文本
- 8. 如何查找和替换文本文件中的一行?
- 9. 在excel中查找并替换文本
- 10. 在WebPage中查找/替换文本Asp.Net
- 11. 在python中查找并替换文本
- 12. 使用Visual Basic查找并替换txt文档中的文本
- 13. Java的查找和替换文本
- 14. VB脚本查找和替换Word文档中的文本
- 15. 在大文件中查找并替换
- 16. tcl在文件中查找并替换
- 17. 在C文件中查找并替换
- 18. 在文件名中查找并替换
- 19. 批处理命令查找/替换文件内的文本
- 20. 使用JREPL.BAT查找并替换文件中的文本使用JREPL.BAT
- 21. (jQuery)查找并替换特定文本
- 22. PHPStorm - 查找和选择替换文本?
- 23. SQL查找并替换文本
- 24. Android/Java - 查找文本并替换WebViewClient
- 25. 原型查找类并替换文本
- 26. 如何使用Objective C查找和替换文件中的文本?
- 27. 使用Scanner和Printwriter类查找和替换文本文件中的单词
- 28. 如何使用vim editor在终端的文件中查找和替换文本
- 29. 蟒蛇:查找和替换编号<1文本文件
- 30. 崇高文本3查找并替换多个文件
PHING是一个基于Apache Ant的PHP项目构建系统或构建工具。你可以用它做任何事情,你可以用像GNU make这样的传统构建系统来做什么,它使用简单的XML构建文件和可扩展的PHP“任务”类使它成为一个易于使用和高度灵活的构建框架。 – milan 2011-02-05 16:41:41
http:// phing。info/ – milan 2011-02-05 16:42:41
我试过替换标签,但得到`不能创建任务/类型:'替换'。确保已经使用taskdef/typedef声明了此类。 – 2016-03-15 08:11:11