2012-11-05 73 views
2

有没有一种方法可以在PHP代码之前执行搜索和替换操作?它是由PHP引擎解释的吗?在执行PHP代码之前进行搜索和替换

期望时间表:

  1. PHP代码<?php echo("hello"); ?>
  2. 搜索和替换操作hellogood bye
  3. PHP代码现在<?php echo("good bye"); ?>
  4. PHP引擎解释代码(输出为good bye)。

可以使用ob_start或甚至mod_substitute作为Apache的输出过滤器来操纵PHP引擎的输出。但是,是否可以操纵PHP引擎(PHP代码,请求等)的输入?

编辑:

我与成千上万的PHP文件工作,我不想让他们进行修改。我想在这些文件中将host1替换为host2,因为这些文件是从host1复制的,并且它们必须在host2上执行。事实上,对主机名进行了几次测试。

+0

如果你愿意摆弄PHP引擎,可能是为什么?也许对你的情况做一些说明。你需要做什么? –

+0

也许如果你给你的用例,我们可以进一步帮助? – vascowhite

+0

所以你想在代码的其余部分之前执行replace()?你能不能把它放在脚本的顶部? – George

回答

0

你可以使用一个打开.php文件中的PHP脚本,进行必要的更换,然后include s表示文件。

+0

你们都提出了相同的建议。但是你的更短。我的所有请求都将通过一个使用'mod_rewrite'的文件进行处理(要执行的原始脚本将作为GET参数传递)。该文件将实施您的建议。 – Numid

0

请求是不寻常的)
看起来很愚蠢。但如果你真的需要它,试试这个..
例如,你需要在执行它之前更改文件test.php
请尝试以下步骤(例如index.php):
1)打开test.php进行阅读并获取其内容。
2)替换你想要的一切。
3)保存修改后的文本为test2.php
4)包括test2.php

编辑

更好薄为什么需要它?尝试使用variables
它将帮助)

0

应该研究模板引擎如smarty和各种形式的prefilters

这样修改代码不是好主意,但回答你的问题。你可以加载原代码,它进行预处理并存储在新的文件:

$contents = file_get_contents('original.php'); 
// ... 
file_put_contents('new.php', $contents); 
include('new.php') 

但我看不出有任何有效使用这个...

你也可能使用eval(),但每次你这样做的时候,猫咪就死了(没有真的,这是危险的功能,它只有几个有效的用途)。

+0

Eval是坏的..非常非常糟糕。如果你只知道我为eval()收到多少次降价。 –

+0

我会宽容。 – Numid

+0

@BogdanBurim我虽然已经明确表示这是不好的做法。 – Vyktor