首先,$HTTP_SERVER_VARS
已被替换 - 你应该使用$_SERVER
代替。 ($HTTP_SERVER_VARS
仍然有效,但可能会在未来版本的PHP中删除)。
其次,你的报价痕显得有点在你发布的代码奇怪 - 你有一个字符串,它看起来像这样:
"'.$HTTP_SERVER_VARS['HTTP_HOST'].'/directory/list="
你的代码不被嵌入在整个事件中双引用,这意味着你认为你在进行连接 - 即点 - 这些实际上是你的字符串的一部分。
这本身不会导致语法错误。它会破坏你的字符串替换,但代码会运行。
它没有的原因,你从它得到一个错误,是因为$HTTP_SERVER_VARS['HTTP_HOST']
是一个数组变量,并且数组变量不能嵌入字符串中,而不包含在大括号{}
中。因此,即使你用$_SERVER['HTTP_HOST']
或其他任何数组变量替换它,你仍然会得到同样的错误。
要纠正这两个问题,我们需要纠正您建立字符串的方式。有两种解决方案,一种使用字符串连接,另一种使用花括号将变量嵌入到字符串中。我会选择前一个选项,因为它接近你的代码试图做的事情。
首先,删除除了'HTTP_HOST'
附近的所有引号(包括单引号和双引号)。在开始时也删除点。
现在,把双引号或者单引号()只是这个字符串的固定部分 - 即'/directory/list='
。
最后,将$HTTP_SERVER_VARS
更改为$_SERVER
。
您应该结束了以下内容:
$_SERVER['HTTP_HOST']."/directory/list="
这应该工作。希望有所帮助。
最后一点,替代选项会已经结束了的代码看起来像这样:
"{$_SERVER['HTTP_HOST']}/directory/list="
...这嵌入使用{}
里面的字符串数组变量。但我会建议坚持使用其他方法,除非您对这种方式感到满意。
另外顺便说一句,我建议使用str_replace
而不是preg_replace
这个,因为你没有做任何实际上需要正则表达式的东西。再加上你的正则表达式因为斜杠而被打破,这与str_replace
不会有关系。
或几乎任何符号作为分隔符,而不仅仅是`/` – Wiseguy 2011-02-02 13:27:19
是的,但随着他的使用/作为它的存在。和/是最常用的一个,并显示如何使用php.net – Barkermn01 2011-02-02 13:28:04