我想将 JS 代码片段从 PHP 文件中移出并移到它们自己的文件中,以使代码更简洁、更易于维护。例如,我有这个功能:
function load_script($fieldname)
{
return
'var help = function () {alert(' . '"EDITOR HELP:\n\n' .
'blah blah.\n\n' .
'more blah blah.\n\n' .
');}' . "\n" .
'var options = { handler: help, title: "Editor help" };' . "\n" .
'var converter = Markdown.getSanitizingConverter();' . "\n" .
'var editor = new Markdown.Editor(converter, "-'.$fieldname.'", options);' . "\n" .
'editor.run();' . "\n";
}
注意 $fieldname
PHP 变量。
想法是将 JS 部分存储在 .js 文件中。然后我将它作为纯文本读入,以便在返回语句中输出。换句话说,像这样:
function load_script($fieldname)
{
$output = file_get_contents("load_script.js");
return $output;
}
显然问题是这不会用相应的值替换 $fieldname
。
我目前的想法是通过字符串替换运行 $output
:
function load_script($fieldname)
{
$output = file_get_contents("load_script.js");
$output = str_replace("some_unique_identifier", $fieldname, $output);
return $output;
}
有没有更好的方法?
编辑:
我应该补充一些背后的动机:
首先,给出的示例很难看,除了最简单的 JS 代码片段外,其他任何东西都难以维护。有很大的错误空间。
其次,当您以这种方式混淆事物时,编辑器在检查语法和突出显示方面不是很有帮助。
第三,让 JS 在其自己的文件上运行可以更轻松地运行在整个站点上运行的缩小脚本(因此您不必手动维护缩小)。
最佳答案
您可以使用模板引擎来执行此操作(例如 Smarty)。只需在 PHP 变量所在的位置使用模板变量编写 JS 文件,然后通过 PHP 加载它们。
您甚至可以自己制作一个简单的。像这样的东西:
// in JS file:
function myFunc() {
alert("hello %s");
}
// in PHP file:
<?PHP
//... code to open JS file and load into string....
echo sprintf($contentsOfJSFile, "John Doe");
?>
RESULTING OUTPUT:
function myFunc() {
alert("hello John Doe");
}
关于php - 如何从带有嵌入 JS 代码的 PHP 变量的 PHP 文件输出 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166513/