php - 如何从带有嵌入 JS 代码的 PHP 变量的 PHP 文件输出 Javascript?

标签 php javascript

我想将 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/

相关文章:

PHP SwiftMailer 或 PEAR 邮件

javascript - LoremPixel 组件始终呈现相同的图像

javascript - 从列表复制到文本区域但防止重复

javascript - 无法在 Google 趋势页面上运行 Tampermonkey 脚本

php - 从 MySQL 数据库输出一个 longblob 的空 PHP

php - 使用 PHP 查询 MySQL 但数据库列有 $

php - Laravel 5.1 bcrypt 和登录

javascript - 如果用户不断单击链接,如何避免网站过载(错误 503)?

javascript - 如何使用输入复选框检查特定图像

javascript - Fullcalendar - 在事件上拖放图标?