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

在运行时对php HTML变量运行javascript,php,javascript,html,email,httprequest,Php,Javascript,Html,Email,Httprequest,重写整个问题,因为它显然太模糊了 我有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_h

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

我有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对包含输入HTML并在其上运行Javascript的PHP文件执行某种HttpRequest。

如果坚持使用jQuery,则第3步必须在客户端完成,除非您使用服务器端Javascript,从PHP标记判断,您不是

你的选择是:

  • 让客户端(例如,发送电子邮件的人)执行JavaScript。如果不想让它可见,可以在隐藏的iframe中执行此操作。另一方面,您可能希望将其作为一项功能:在发送之前,向用户显示预览窗格。submit按钮可用于提交最终HTML(在jQuery操作之后)
  • 在服务器上安装具有JavaScript功能的图形web浏览器并捕获输出。这可能会给你带来很多麻烦
  • 为此转储jQuery,看看是否可以使用PHP的DOMDocument。抽象很多,语法与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>
    
    函数发送一些电子邮件()
    {
    ob_start();
    包括(“my_email.php”);
    $content=ob_get_clean();
    }
    //文件my_email.php:
    
    什么是“新生成的内容”?是谁生成的?你能分享一个链接吗?我们可以在这里看到你到现在为止所做的事情吗?新生成的内容应该是我的旧HTML,在它上面运行一些Javascript@nDudani我的脚本的其余部分工作正常,有点太大,无法共享。我目前没有进展,因为我不知道如何才能做到这一点。(脚本的其余部分也与问题无关)看到了吗?这也是你想要的吗?@ShadowWizard没有,我知道PHP在字体大小调整方面的限制,我有一个脚本可以完美地完成它。我的问题是在PHP运行时运行该(java)脚本。@不管谁投了反对票,请评论为什么。服务器端Javascript听起来很有用,我将查找它是什么。预览窗格可能是一个好主意,因为我已经在使用它了(只是现在不需要打开它)。我完全了解获取此功能的PHP方法,但是如果找不到实现此功能的方法,我将保存它作为最后手段。出于多种原因,1:Javascript版本是100%可靠的。2:我以后可能需要在其他电子邮件上运行其他脚本。最常用的解决方案是Node.Js,但您需要学习服务器端编程的“全新”方式。您还需要能够在服务器上安装新软件。如果在电子邮件输入屏幕上计算字符串的宽度,并将其作为整数保存到数据库中,该怎么办?很遗憾,这是不可能的,内容不是用户提交的,而是来自一个不同的数据库,来自一个单独的软件包,我的客户使用该软件包并通过XML与我的数据库通信。在这种情况下,我可能会使用
    imagettfbbox()
    计算宽度。这是一个GD库函数,它接受大小、字体文件(您可能需要上传)和字符串,并返回文本的尺寸。请注意,字体大小是以点为单位定义的,因此请使用内联CSS(大多数邮件客户端都支持这一点):
    创建字体越来越小的图像,直到找到合适的图像。(
    if($resultDimensions[2]<200){…}