【问题标题】:Regex to change method call parameter正则表达式更改方法调用参数
【发布时间】:2010-04-12 11:05:00
【问题描述】:

正则表达式让我哭了,所以我来这里寻求帮助。

我正在Panic's Coda 中寻找有关查找和替换的一些提示。我知道 F&R 非常先进,但我只是在寻找最好的方法来做到这一点。 我正在尝试重写我正在使用的“模板引擎”(非常基本) 我正在用 PHP (CodeIgniter) 编写 webapp。

目前我这样称呼我的模板:

$this->load->view('subviews/template/headerview');
$this->load->view('subviews/template/menuview');
$this->load->view('subviews/template/sidebar');
$this->load->view('The-View-I-Want-To-Load');   // This is the important line
$this->load->view('subviews/template/footerview');

但是每次我想使用五行代码时效率很低 在每个不同的控制器中加载不同的页面。于是我改写成这样:

$data['view'] = 'The-View-I-Want-To-Load';
$this->load->view('template',$data);

这样,如果我需要对设计进行任何重大更改,它可以 可以从 template.php 视图文件(包含标题、菜单、侧边栏视图等)轻松完成。

但是我在很多地方都使用了前面的 5 行 不同的控制器和功能。所以,我的问题是---我怎么能 查找并替换旧的模板引擎(5 行代码)为新的 一 - 以视图的名称替换重要的、唯一的 $data['view] 中的那一行?

这有意义吗?!如果没有,我会尝试改写!我的意思是,有没有办法通过正则表达式或其他方式来做到这一点?还是我在这里完全错了?

【问题讨论】:

  • 这五行是否总是以相同的顺序出现?或者,换句话说,我如何知道其中哪一个包含您要加载的视图?
  • 它们总是以相同的顺序出现。第四行始终包含我要加载到主要内容区域的视图。所以第四行是动态的,否则第 1、2、3 和 5 行始终保持不变。

标签: regex replace coda


【解决方案1】:

你的正则表达式看起来像这样:

\$this->load->view\('subviews/template/headerview'\);\n\$this->load->view\('subviews/template/menuview'\);\n\$this->load->view\('subviews/template/sidebar'\);\n\$this->load->view\('([^']*)'\);\n\$this->load->view\('subviews/template/footerview'\);

并替换为

\$data['view'] = '$1';\n\$this->load->view('template',\$data);

【讨论】:

  • 不错的一个!我将首先在一个示例 PHP 文件上对其进行测试,并尽快报告。
  • 我的错,今天早上没有喝足够的咖啡。不在正则表达式模式下,我会再试一次! :D
  • 根据软件的不同,您可能需要对 \ 字符进行双重转义。我想我让他们都逃脱了,但对我来说仍然是早上:P
  • 哈哈,不用担心 :) 好的,在 Coda 中,打开 Regex 后仍然找不到任何东西。我有几个选项:语法(Java、Perl、Ruby、GNU、grep、POSIX、POSIX Basic 等)——默认设置为 Ruby。转义字符设置为 \。下一步是什么?!我在这里很困惑......
  • 如果你在 Windows 系统上,可能使用\r\n
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2020-08-25
  • 2011-08-06
相关资源
最近更新 更多