运行时在php HTML变量上运行javascript

Run javascript on php HTML variable during runtime

本文关键字:运行 javascript 变量 HTML php 运行时      更新时间:2023-09-26

重写了整个问题,因为显然它太模糊了

我有HTML,这个HTML需要在我通过电子邮件发送之前由Javascript处理。

换句话说,我需要在PHP运行时在HTML上运行Javascript。

(假的)例子来说明我的观点:

<?
$html = run_js_html($input,'myscript.js');
mail('target@email.com','Subject',$html);
?>

$input包含输入HTML
myscript.js包含一些JS功能
run_js_html应该是一个在html上运行脚本的函数,然后在javascript之后返回新的html。

这可能吗?我认为可能可行的一种方法是通过PHP对PHP文件进行某种HttpRequest,该文件包含输入HTML并在其上运行Javascript

步骤3,如果您坚持使用jQuery,则必须在客户端完成,除非您正在使用服务器端JavaScript(从PHP标记判断,您没有使用服务器端JavaScript)。

你的选择是:

  1. 让客户端(例如,发送邮件的人)执行JavaScript。如果您不希望隐藏框架可见,则可以在隐藏框架中执行此操作。另一方面,您可能想让它成为一个特性:在发送之前,向用户显示一个预览窗格。提交按钮可以用来提交最终的HTML(在jQuery的操作之后)。
  2. 在服务器上安装具有JavaScript功能的图形web浏览器并捕获输出。这样的东西可能太麻烦了。
  3. 转储jQuery用于此目的,看看是否可以使用PHP的DOMDocument。phpquery抽象了很多东西,语法类似于jQuery。

但是你真的想这么做吗?你就不能这样做吗?

function send_some_email()
{
    ob_start();
    include("my_email.php");
    $content = ob_get_clean();
}
// file my_email.php:
<?php 
    $size = 3;
    $length = strlen($title);
    if($length > 50)
        $size = 1;
    elseif($length > 30)
        $size = 2;
?>
<body>
    <?php echo sprintf('<font size="%d">%s</font>', $size, $title); ?>
    <br>
    Hello World.
</body>

虽然通过字符数判断字符串的长度不是很可靠,但它是一个很容易实现的方法。您还可以通过以下方式计算字符串的大致长度:

  1. 创建或查找一个函数,该函数考虑到'i'(不宽)和'M'(宽)等字母。
  2. imagettfbbox()计算字符串的宽度