У меня есть две переменные 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;
}
Что вы подразумеваете под «$ dynamic fail in regex functions»? Добавьте пример, чтобы проиллюстрировать проблему. –
Обеспечить ожидаемый выход –
Можем ли мы увидеть функцию? – Drakekin