如何对get_defined_vars返回的所有内容执行str_replace? (php)

问题描述:

如何在get_defined_vars中返回的所有内容上执行str_replace?用普通的字符串来做这件事很简单,但是对象/类呢?如何对get_defined_vars返回的所有内容执行str_replace? (php)

+0

你是否真的想在所有定义的变量**中替换**?也许你可以详细说明你的用例? – deceze 2010-07-11 01:23:43

+0

是的。我硬编码的网址在一切,现在即时通讯域名切换,所以而不是有每个文件的两个版本(每个域的一个),我将只是运行一个str_replace和repalce domain1.com从每个变量(其中很多)到domain2.com – phpno 2010-07-11 01:28:26

+1

在您的代码编辑器中进行搜索和替换。像'找到/替换所有文件夹' – 2010-07-11 01:31:12

这听起来像一个坏主意,所以我只会回答硬编码域的实际问题。直接解决这个问题,而不是在糟糕的结构上应用更多的bandaid。

您应该使用常量(使用文本编辑器搜索/替换,而不是PHP)替换每个硬编码域的出现,然而您可以随意切换。

if (/* something */) { 
    define('MYAPP_BASE_URL', 'http://example.com'); 
} else { 
    define('MYAPP_BASE_URL', 'http://example2.com'); 
} 

… 

$url = MYAPP_BASE_URL; 

更好的是,您的代码应该足够动态,以便使用$_SERVER['HTTP_HOST']开始。

+0

是的,我知道我应该这样做,但我没有。我硬编码的网址(链接)等。我真的需要做一个str_replce()在get_defined_vars() – phpno 2010-07-11 02:50:25

+0

@phpno这一切都只是一个真正不切实际的想法。您只能在定义变量之后重新定义变量,所以您不能只在脚本顶部的'get_defined_vars'上运行某些变量,因为在此处不会定义变量。你需要在每个变量声明和它被使用的地方注入这个变量变化代码,这可能是每隔一行。你只需要硬着头皮去解密你的URL,而不是用其他方法。 – deceze 2010-07-11 03:33:37