【问题标题】:How to make a WYSIWYG editor in PHP如何在 PHP 中制作所见即所得的编辑器
【发布时间】:2010-02-04 00:48:30
【问题描述】:

我正在尝试在 PHP 中创建一个所见即所得的编辑器。到目前为止,我得到了这个(顺便说一句,我是新手):

HTML:

   <form action="" method="POST">
        <select name="fontSize" onchange="this.form.submit();">
            <option>Font Size</option>
            <option value="14px">14px</option>
            <option value="24px">24px</option>
            <option value="34px">34px</option>
        </select>
    </form>

    <form action="" method="POST">
        <textarea name="bodyText" style="width:500px;height:200px;font-size:<?php echo $fontSize; ?>"></textarea>
    </form>

PHP:

<?php

$fontSize = $_POST['fontSize'];

switch($fontSize)
{
    case "14px":
    $fontSize = "14px";
    break;

    case "24px":
    $fontSize = "24px";
    break;

    case "34px":
    $fontSize = "34px";
    break;

    default:
    $fontSize = "12px";
}

?>

问题是当我从下拉菜单中选择一个新的字体大小时,整个文本区域的字体大小会发生变化,而不是我希望能够突出显示特定的单词或字母并且只有该更改的字体大小而不是整个文本区域。这个怎么办?

【问题讨论】:

  • 我建议使用现有 Javascript 框架(如 JQuery)中的富文本编辑器,而不是尝试推出自己的基于表单的编辑器。
  • 您确实意识到您的 switch 块是完全多余的。 $fontSize = "12px"; $fontSize = $_POST['fontSize']; 做同样的事情。
  • 顺便说一句,投反对票的人应该解释他们投反对票的原因。仅仅因为某人可能是客户端/服务器端编程的新手并不意味着这是一个愚蠢的问题。这个问题很清楚。

标签: php wysiwyg


【解决方案1】:

您可以(理论上)这样做,但必须使用它的用户不会对此感到满意。问题是,每次按下按钮时,页面都会刷新。这意味着表单的内容被发送到服务器,在那里修改并发回。

例如更改字体,响应时间太长。用户不会舒适地使用此编辑器

获得的方法确实是使用 JS WYSIWYG 编辑器来处理 客户端(其他答案链接到)的所有格式等。

尤其是您所要求的,即仅更改突出显示的文本,解决起来并不容易。您可以通过发送两个附加字段来执行此操作,这些字段包含突出显示文本的起点和终点。这些必须通过 JS 更新。

没有 JS,你无法实现这一点。如前所述,文本在服务器端进行修改。您无法仅通过文本来了解用户在做什么。

帮自己一个忙,不要尝试这样做。真的不值得。

【讨论】:

    【解决方案2】:

    请遵守 DRY 原则(不要重复自己)并选择众多 Javascript 所见即所得编辑器之一,例如 http://tinymce.moxiecode.com/

    相信我,人们在这些方面付出了很多努力,而你真的不想自己做。

    再见

    【讨论】:

    • 如果这就是 DRY 的意思,Stack Overflow 就不会存在。想想你第一次编程。可能需要建立一个博客才能掌握窍门(已经有 WordPress、Movable Type、Blogger 等)。
    • 是的... DRY 更多地意味着每个项目。不要复制和粘贴代码,将其放入函数等中。
    【解决方案3】:

    同意,我们使用 TinyMCE,它非常强大。查看http://tinymce.moxiecode.com/examples/full.php 了解它的所有功能。示例页面的页脚显示了一组用于特定目的的带有较少按钮的配置。

    让它按照你想要的方式运行肯定需要一些耐心,但最终它比我见过的其他任何东西都要好。 FileManager 和 ImageManager 插件不是免费的,但是当您购买它们时它们仍然是开源的并且运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多