如何在PHP中创建WYSIWYG编辑器

时间:2010-02-04 00:48:30

标签: php wysiwyg

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

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";
}

?>

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

3 个答案:

答案 0 :(得分:5)

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

仅用于更改字体,响应时间太长。使用此编辑器的用户将无法正常工作

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

特别是您要求的内容,即仅更改突出显示的文字,无法解决。您可以通过发送两个附加字段来执行此操作,这些字段将起始端保留为突出显示文本的结束点。这些必须通过JS更新。

没有JS,你无法做到这一点。如前所述,文本在服务器端进行了修改。您无法通过使用文本来弄清楚用户正在做什么。

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

答案 1 :(得分:0)

请遵守DRY原则(不要重复自己)并选择许多Javascript WYSIWYG编辑器中的一个,如http://tinymce.moxiecode.com/

相信我,人们在这些方面投入了大量的工作,你真的不想自己做。

再见

答案 2 :(得分:0)

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

让它以你想要的方式运行肯定需要一些耐心,但最终它比我见过的其他所有东西都更好。 FileManager和ImageManager插件不是免费的,但是当你购买它们并且工作得很好时它们仍然是开源的。