2010-02-04 40 views
3

我正尝试在PHP中创建所见即所得编辑器。到目前为止,我得到这个(我是新的BTW):如何在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"; 
} 

?> 

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

+2

我会建议使用现有的JavaScript框架(如JQuery)的富文本编辑器,而不是试图推出自己的基于表单的编辑器。 –

+2

你确实意识到你的'switch'块是完全冗余的。 '$ fontSize =“12px”; $ fontSize = $ _POST ['fontSize'];'做同样的事情。 –

+2

Btw downvoters应该解释为什么他们downvote。仅仅因为某人对客户端/服务器端编程可能不熟悉并不意味着这是一个愚蠢的问题。问题完全清楚。 –

回答

0

请遵守干燥原则(不要重复自己),并采取许多Javascript WYSIWYG编辑器之一,如http://tinymce.moxiecode.com/

相信我,人们已经在这些方面做了很多工作,而且你真的不想自己做。

再见

+0

Woops,击败我:P –

+2

如果这就是DRY的意思,Stack Overflow就不存在了。想想你第一次编程。它可能需要建立一个博客来获取东西(已经有WordPress,Movable Type,Blogger等)。 – orokusaki

+0

是的...... DRY更像是每个项目的意思。不要复制和粘贴代码,把它放在函数中等等。 –

5

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

对于例如改变字体,响应时间太长了。使用此编辑器的用户将无法​​舒适地使用

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

特别是你要求的,即只改变突出显示的文本,不是微不足道的解决。您也许可以通过发送两个附加字段来保存突出显示的文本的结束点。这些将不得不通过JS进行更新。

如果没有JS,你不能实现这一点。如前所述,该文本在服务器端修改。你不可能通过使用文本来弄清楚用户在做什么。

帮你一个忙,不要试图去做。这实在是不值得的努力。

0

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

它肯定需要一定的耐心才能让它按照你的愿望运行,但最终它比我见过的所有东西都更好。 FileManager和ImageManager插件不是免费的,但它们在购买时仍然是开源的,并且工作得很好。