首先,$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