我有兩個似乎具有相同值的PHP變量,$ dynamic是從函數產生的,$ test是單引號中的文本。使PHP變量評估爲'純文本'
當我打印它們的值時,它們是相同的,但$動態在正則表達式函數中失敗。
有沒有什麼辦法讓一個PHP字符串「不動」,只是普通的舊文本
$test = 'username'; //Evaluates OK
die($test.' '.$dynamic); //Produces: username username
下面是函數,$模式是問題。這實際上是從一個較早的問題,但我已經把問題縮小到$模式的評估。除了preg_replace_callback之外,這似乎也是其他函數的一個問題。
public function output() {
if (!file_exists($this->file)) {
return "Error loading template file ($this->file).<br />";
}
$output = file_get_contents($this->file);
foreach ($this->values as $key => $value) {
$tagToReplace = "[@$key]";
$output = str_replace($tagToReplace, $value, $output);
$dynamic = preg_quote($key);
$test = 'username';
$pattern = '%\[if @'.$test.'\](.*?)\[/if\]%'; // produces: %\[if @username\](.*?)\[/if\]%
$output = preg_replace_callback($pattern, array($this, 'if_replace'), $output);
}
return $output;
}
你是什麼意思「$動態在正則表達式函數失敗」?請添加一個例子來說明問題。 – 2012-03-03 22:05:19
提供預期的輸出 – 2012-03-03 22:05:53
我們可以看到該功能嗎? – Drakekin 2012-03-03 22:06:14