富文本编辑器——关于PHP如何不断生成html页面并生成链接

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28391061/article/details/51941500

    之前公司有一个需求,就是完成一个富文本编辑器。一开始我以为这是一个很简单的事情,但是事实证明这非常难。关于如何每次都自动生成一个html页面,我做了很多次尝试,也在网上找了很多帖子,但是都没有解决,最后,我采用了一个简单而且效率高占空间少的办法。如果有空我将要写一下我整个编写富文本编辑器的过程。

    首先,因为每次都要提交,而且生成的页面名字必然是不同的,所以,必然有一个递增的过程。一开始我用for循环,后来证实了for循环在这里是不适用的。首先,for循环每次都要有一个初始值,如果要递增的话那么这个初始值应该是上一次保存的值,很显然这个我实现不了。不知道大家是不是有办法。其次,如果是要生成一个页面,那么for循环只能实现一次就要break,可是break之后后面的代码没有实施,也许brek之后加一个返回值就行,但是介于前面的原因就不再测试了。

     首先,从提交的页面post过来的数据,我已经在提交的时候就已经将收尾封装好,也就是说如果是一段内容为“aa”,那么post到这个页面的内容就是<p>aa</p>了。这个功能实现非常简单,只是更改一下可编辑div的innerHTML和textarea的value值就可以做到。既然要每次生成一个新的页面,那么页面应该在一个文件夹里,可是页面的名字是不一样的。我采用的办法是设置一个txt文件存储html文件名的后缀,然后设置一个文件夹存储每次生成的html文件,注意,这里一定要设置一个子文件夹,不然会导致编辑器文件夹里文件越来越庞大。代码如下:

header('content-type:text/html;charset=utf-8');
	$tijiao = $_POST['tijiao'];
	$fc = file_get_contents("te.txt");
	$fff = fopen("te.txt", "w");

    header肯定会有的,我按顺序贴出来。这里出现的问题是,我接收了post过来的数据,但是生成的html页面会没有<meta charset='utf-8'>这一项,显然这会导致乱码,于是我重新设置了一下post过来的数据:
$all = "<!DOCTYPE html>"."<head>
	<meta charset='UTF-8'>
	<title>editor</title>
</head>"."<body>".$tijiao."</body>"."</html>";
    这样就给数据加上了编码,在运行的时候就不会出现乱码了。

    接下来,我需要给生成的页面命名,要设置名字递增,这样te.txt就发挥了它的作用,fopen的w模式在写的时候会覆盖之前的内容,那么只需要每次加一,然后把这个数字覆盖到te.txt中,然后就可以实现有一个变量每打开一次这个文件就加一,然后用这个数字作为文件名的后缀,这样就可以产生名字不一样的文件。fopen()函数每次打开文件的时候如果文件不存在就会自动创建文件,生成html页面就是利用了这个功能:

$count =$fc+1;
	$ff = "html/test".$count.".html";
	$fp = fopen($ff,"w");
	$f = fwrite($fp,$all);
	$fd = fwrite($fff,$count);
	fclose($fp);
	fclose($fff);

    最后加一段文字每次显示生成页面成功,然后把链接加上就好了。

<p>生成页面成功,链接是</p>
 <a href="<?php echo $ff; ?>">点击这里</a>
一下是这个php页面的代码,用来不断生成新的html页面:

<?php 
	header('content-type:text/html;charset=utf-8');
	$tijiao = $_POST['tijiao'];
	$fc = file_get_contents("te.txt");
	$fff = fopen("te.txt", "w");
	$all = "<!DOCTYPE html>"."<head>
	<meta charset='UTF-8'>
	<title>editor</title>
</head>"."<body>".$tijiao."</body>"."</html>";
	$count =$fc+1;
	$ff = "html/test".$count.".html";
	$fp = fopen($ff,"w");
	$f = fwrite($fp,$all);
	$fd = fwrite($fff,$count);
	fclose($fp);
	fclose($fff);
 ?>
 <p>生成页面成功,链接是</p>
 <a href="<?php echo $ff; ?>">点击这里</a>
    很简单吧,我一开始想了很多办法都没用。。。看来很多时候原理很简单的事情大家都会想复杂了。转载请注明出处:贺小花儿。


展开阅读全文

没有更多推荐了,返回首页