在php模板文件中搜索和替换

时间:2013-08-19 11:00:20

标签: php regex

基本上尝试将我的整个zend框架网站转换为多语言。 最初没有它的计划,并且查看代码是在没有使用我们可以在关键时刻使用的单个包装函数的情况下编写的。查看我的zf项目中所有phtml文件中的代码如下所示:

<div class="contact">
  <span class="edit">
    <a href="javascript:void(0);">edit</a></span>
    <h2>Job Board Info</h2>
    <div class="info-grid">
      <div class="field">Contact Name: </div>
      <div class="field-info">
           <?php echo "Good Guy";?>
      </div>
    </div>
    <div class="info-grid">
     <div class="field">Description: </div>
     <div class="field-info">
      <?php echo "He is a very good guy";?>
     </div>
    </div>
</div>

我想搜索所有的phtml文件,例如 修改联系人姓名好人说明他是一个非常善良的人 并用

替换它们
<? echo translate("edit") ?>
<? echo translate("Contact Name") ?>
translate("Good Guy");
<? echo translate("Description") ?>
translate("He is avery good guy");

我可以使用 Zend Studio 在所有phtml文件中执行正则表达式搜索和替换,但我不确定为了实现这一点,正确的正则表达式模式是什么。以上文本并非在所有模板中都是固定的,而仅仅是示例。正则表达式应该跳过所有HTML代码并仅查找文本并用 替换它们。如果任何正在回复的文字,如 echo&#34; text&#34; 应替换为 translate(&#34; text&#34;)。

或者,为了尽快实现这一点,请提出其他建议。

1 个答案:

答案 0 :(得分:1)

我要做的是使用例如TextCrawler(一次搜索和替换多个文件),然后转到

  • >edit<
  • >contact name: <
  • >Description: <

区分大小写 关闭进入

  • ><?php echo translate("edit"); ?><
  • ><?php echo translate("Contact Name"); ?><
  • ><?php echo translate("Description"); ?><

(这取决于您要翻译的单词组数量。这是手动方式。 如果你有像这样“处理”的bambillion不同的东西,你可能也想使用正则表达式)

..至于 echos 中已经PHPfied的文本确实使用正则表达式:

搜索 (.*)<.*echo.*["\'](.*)["\'].*>(您可能希望更具体一些,因为这可能会造成很多误报 - 确保它适合您想要的文件内容特别是'过程')

并替换为 $1<?php echo translate("$2"); ?>

..其中 $ 1 ('搜索'条件中的第一个括号)代表该行上的空格或其他任何内容(试图保留缩进)和 $ 2 (第二个括号)代表最初回显的字符串。 它还将"'作为回显文本的正确引用。

对于科学的热爱:

备份所有代码!

..在你做这样的事情之前:D