【问题标题】:Print the output of php/js file to textarea将 php/js 文件的输出打印到 textarea
【发布时间】:2012-02-11 12:10:29
【问题描述】:

我使用记录不同实体的 CMS ELGG (http://www.elgg.org),我创建了一个页面,列出了所有的海报和一些 javascript 的 html,以允许内部用户打印 pre-格式化列表,还可以选择 javascript 打印或不打印这些实体

所以我想保存这个页面,可能在一个 textarea 字段中,以便用户可以检索这个页面。 如果我在 textarea 标记内运行所有函数,php 变量可以工作,但不允许 javascript 设置表单,则与我在这些实体前面插入的复选框也有冲突,允许选择打印或不打印,这样做不能在文本区域内工作...

所以我不知道如何保存这个页面并允许用户保存多个这种类型的页面,以便它可以使用多个模型。

我已经阅读了几个关于 php 函数 ob ob flush start 的此类问题......但我没有找到任何适合我的东西

如果有人对我有什么想法……

谢谢 ;)

来自 php 文件的示例

<div id="engagements" class="blockcv">
    <div class="comptitrecv"><input type="checkbox" value="" id="printengagements" class="checkprint" checked="checked"/> Engagement citoyen</div>
   <script type="text/javascript">
function sortDescending(a, b) {
     var date1  = $(a).find("span").text();
       date1 = date1.split('/');
     date1 = new Date(date1[1], date1[0] -1, 1);
     var date2  = $(b).find("span").text();
       date2= date2.split('/');
     date2 = new Date(date2[1], date2[0] -1, 1);

     return date1 < date2 ? 1 : -1;
    };
    $(document).ready(function() {
        $('.shakeengagements .elementengagements').sort(sortDescending).appendTo('.shakeengagements');
    }); 
</script>
<div class="shakeengagements">
     <?php
$user = $_SESSION['user'];
$count_experiences = count_user_objects($user->guid, "experience");
$experiences = get_user_objects($user->guid, "experience", 99);
foreach ($experiences as $ent) { 
 ?>
  <script type="text/javascript">  
 $(document).ready(function() {
  $('#hide<?php echo $ent->guid; ?>').change(function(){
    if($(this).is(":checked")) {
        $('div#hidediv<?php echo $ent->guid; ?>').removeClass("noprint");
    } else {
        $('div#hidediv<?php echo $ent->guid; ?>').addClass("noprint");
    }
});
});
  </script>
<div class="elementengagements" id="hidediv<?php echo $ent->guid; ?>">
<div class="cvelleft">
<p><span><input type="checkbox" value="" id="hide<?php echo $ent->guid; ?>" class="checkprint" checked="checked"/>
<?php 
    $classementdates = $ent->ongoing;
    $enddate = $ent->enddate;
    if ($classementdates == 'ongoing') {
     echo '<span class="date">'; 
     echo $ent->startdate; 
     echo '<font style="display:none">9</font></span> - ';
     echo elgg_echo('resume:acejour');
     } else {
            if(empty($enddate)) {
                     echo '<span class="date">'; 
     echo $ent->startdate; 
     echo '<font style="display:none">9</font></span>';

            } else {
         echo $ent->startdate;
         echo ' - <span>';
         echo  $ent->enddate;
         echo '</span>';
     } 

     }
     ?> </span>:</p>
</div>
<div class="cvelright"> 
<p><?php echo $ent->heading; ?> - <?php echo $ent->structure; ?></p>
<p><?php echo $ent->remarques; ?></p>
</div>
</div>
<?php   } ?>
</div>
</div>

【问题讨论】:

    标签: php textarea save elgg


    【解决方案1】:

    不太清楚你到底想做什么,但对我来说,听起来你想要渲染上面的内容,然后出现在textarea

    如果你想这样做,那么我不明白为什么 ob_start 在同一页面上不起作用:

    ob_start();
    //your code that you want to appear in the textarea
    $output = ob_get_clean();
    
    echo "<textarea>".$output."</textarea>";
    

    如果它是一个单独的页面,那么你总是可以这样做:

    $output = file_get_contents("/path/to/php_file.php");
    echo "<textarea>".$output."</textarea>";
    

    如果您希望能够将textarea 读取为HTML,那么我是否还建议在textarea 标记内使用htmlentities($output),即:

    echo "<textarea>".htmlentities($output)."</textarea>";
    

    但请注意,如果您将 textarea 提交到要保存的表单,您会看到很多 HTML 实体,例如,版权符号 - © - 将转换为 & 复制; (注意:我必须在 & 和副本之间留一个空格;否则你看不到我的意思)- 但显然它是一样的。

    更新

    您可以为此使用 jQuery,它应该可以工作 - 以 div with id:engagementswill get copied into thetextarea. If you don't want the javascript (or anything else) to appear in thetextarea, then don't put it wihin thediv. I'd keep the below out of thatdiv` 中的所有内容开始...

    <input type="checkbox" id="form_submit" name="form_submit" value="yes">
    <textarea id="output"></textarea>
    <script>
        $(document).read(function(){
            $("#form_submit").click(function(){
                if($(this).checked){
                    $("#output").val($("#engagements").text());
                }
            }
        });
    </script>
    

    以上内容未经测试,但理论上应该可行!

    【讨论】:

    • 您好 MrJ,感谢您的回答,更清楚的是,我希望我制作的页面以 html 显示,带有可选中或不可选中的复选框,一旦完成,只需单击一个按钮保存整个页面以保存html。如果我按照您向我展示的那样编写函数,我有一个 textarea 但复选框不起作用...
    猜你喜欢
    • 2011-12-19
    • 2013-04-19
    • 1970-01-01
    • 2017-11-04
    • 2014-05-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多