2012-03-03 4 views
-1

У меня есть две переменные PHP, которые, как представляется, имеют одинаковое значение, $ dynamic, который создается из функции и $ test, который является просто текстом в одинарных кавычках.Сделать переменную PHP оценкой как «простой» текст

Когда я печатаю их значения, они одинаковы, но динамическая функция $ dynamic не работает в регулярных выражениях.

Есть ли способ сделать PHP строку «не динамический» и просто старый текст

$test = 'username'; //Evaluates OK 
die($test.' '.$dynamic); //Produces: username username 

Ниже функция, $ шаблон является проблемой. Это на самом деле из более раннего вопроса, но я с тех пор сузил проблему до оценки $ pattern. Это также похоже на проблему с другими функциями, кроме 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; 

}

+6

Что вы подразумеваете под «$ dynamic fail in regex functions»? Добавьте пример, чтобы проиллюстрировать проблему. –

+1

Обеспечить ожидаемый выход –

+1

Можем ли мы увидеть функцию? – Drakekin

ответ

1

Возможно $dynamic может содержать невидимые символы. Переверните строку и напечатайте код символа каждого символа (используйте ord) - и сравните это с результатом для "username".

var_dump также может давать подсказки, поскольку он также покажет длину строки.

+0

Спасибо. Хорошее предложение, var_dump для $ dynamic имеет 8 символов и выглядит так же, как и коды ASCII. – jsuissa

Смежные вопросы