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


search and replace in php template files

基本上是试图将我的整个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");

我可以使用ZendStudio在所有phtml文件中执行正则表达式搜索和替换,但我不确定实现这一点的正确正则表达式模式是什么。上述文本并不是所有十个模板都固定不变,只是一个例子。regex应该跳过所有html代码,只查找文本,并用替换它们。如果任何文本像echo"text"一样被回显,则应将其替换为translate("text")

或者,为了尽快实现这一目标,请提出其他方法。

我要做的是使用例如TextCrawler(用于一次搜索和替换多个文件)并简单地打开

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

区分大小写 关闭进入

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

(这取决于你要翻译多少组单词。这是手动的方法。如果你有很多不同的东西要像这样"处理",你可能也想使用regex)

至于echos中已经PHPfied的文本,请使用regex:

搜索(.*)<.*echo.*["''](.*)["''].*>(您可能需要更具体一点,因为这可能会产生很多误报-确保它适合您想要专门"处理"的文件的内容)

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

其中$1("搜索"条件中的第一个圆括号)代表行上的空白或其他内容(试图保持缩进),$2代表原始回显字符串。它还将"s和's作为回显文本的正确引号。

为了对科学的热爱:

备份所有代码

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