php开发文章发布示例(正则表达式实例开发)

存档:

post.php

 1 <form method="post" action="viewthread.php" target="_blank">
 2     <h2 align="center">发表文章实例开发</h2>
 3     <div style="width:200;float:left">
 4         <h5>选项</h5>
 5         <ul style="list-style:none;margin:0px;padding:0px">
 6             <li><input type="checkbox" name="parse[]" value="1">删除HTML标签</li>
 7             <li><input type="checkbox" name="parse[]" value="2">转换HTML标签为实体</li>
 8             <li><input type="checkbox" name="parse[]" value="3">使用UBB代码</li>
 9             <li><input type="checkbox" name="parse[]" value="4">开启URL识别</li>
10             <li title="可用的表情:
11                                 【:),/wx,微笑】【:@,/fn,发怒】
12                                 【:kiss,/kill,/sa,示爱】
13                                 【:p,/tx,偷笑】【:q,/dk,大哭】">
14                 <input type="checkbox" name="parse[]" value="5">使用表情</li>
15             <li><input type="checkbox" name="parse[]" value="6">禁用非法关键字</li>
16             <li><input type="checkbox" name="parse[]" value="7">PHP代码设为高亮</li>
17             <li><input type="checkbox" name="parse[]" value="8">原样显示</li>
18             <li><input type="checkbox" name="parse[]" value="9">同步换行</li>
19         </ul>
20     </div>
21     <div style="width:300;float:left">
22         <h5>标题<input type="text" name="subject" size=50></h5>
23         <h5>内容<textarea rows="7" cols="50" name="message"></textarea></h5>
24         <input type="submit" name="replysubmit" value="发表帖子">
25     </div>
26 </form>

viewthread.php

1 <?php
2     require "article.class.php";
3     $article = new Article($_POST["subject"],$_POST["message"],$_POST["parse"]);
4     echo $article->getSubject();
5     echo "<hr>";
6     echo $article->getMessage();
7 ?>

article.class.php

  1 <?php
  2     class Article{
  3         private $subject;
  4         private $message;
  5         function __construct($subject="",$message="",$parse=array()){
  6             $this->subject = $this->html2Text($subject);
  7             if(!empty($parse)){
  8                 foreach($parse as $value){
  9                     switch($value){
 10                         case 1:
 11                             $message = $this->delHtmlTags($message);
 12                             break;
 13                         case 2:
 14                             $message = $this->html2Text($message);
 15                             break;
 16                         case 3:
 17                             $message = $this->UBBCode2Html($message);
 18                             break;
 19                         case 4:
 20                             $message = $this->parseURL($message);
 21                             break;
 22                         case 5:
 23                             $message = $this->parseSmilies($message);
 24                             break;
 25                         case 6:
 26                             $message = $this->disableKeyWords($message);
 27                             break;
 28                         case 7:
 29                             $message = $this->prasePHPCode($message);
 30                             break;
 31                         case 8:
 32                             $message = $this->prasePer($message);
 33                             break;
 34                         case 9:
 35                             $message = $this->nltobr($message);
 36                             break;
 37                     }
 38                 }
 39             }
 40             $this->message = $message;
 41         }
 42
 43         private function delHtmlTags($message){
 44             return strip_tags($message);
 45         }
 46
 47         private function html2Text($message){
 48             return htmlspecialchars(stripslashes($message));
 49         }
 50
 51         private function UBBCode2Html($message){
 52             $pattern = array(
 53                 ‘/\[b\]/i‘,‘/\[\/b\]/i‘,‘/\[i\]/i‘,
 54                 ‘/\[\/i\]/i‘,‘/\[u\]/i‘,‘/\[\/u\]/i‘,
 55                 ‘/\[font=([^\[\<]+?)\]/i‘,
 56                 ‘/\[color=([#\w]+?)\]/i‘,
 57                 ‘/\[size=(\d+?)\]/i‘,
 58                 ‘/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i‘,
 59                 ‘/\[align=(left|center|right)\]/i‘,
 60                 ‘/\[url=www.([^\["\‘]+?)\](.+?)\[\/url\]/is‘,
 61                 ‘/\[url=(https?|ftp|gopher|news|telnet){1}:\/\/([^\["\‘]+?)\](.+?)\[\/url]/is‘,
 62                 ‘/\[email\]\s*([a-z0-9\-_.+]+)@([a-z0-9\-_.]+)\s*\[\/email\]/i‘,
 63                 ‘/\[email=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\](.+?)\[\/email\]/is‘,
 64                 ‘/\[img\](.+?)\[\/img\]/‘,
 65                 ‘/\[\/color\]/i‘,
 66                 ‘/\[\/size\]/i‘,
 67                 ‘/\[\/font\]/i‘,
 68                 ‘/\[\/align\]/‘
 69             );
 70
 71             $replace = array(
 72                 ‘<b>‘,‘</b>‘,‘<i>‘,
 73                 ‘</i>‘,‘<u>‘,‘</u>‘,
 74                 ‘<font face="\\1">‘,
 75                 ‘<font color="\\1">‘,
 76                 ‘<font size="\\1">‘,
 77                 ‘<font style=\"font-size:\\1\">‘,
 78                 ‘<p align="\\1">‘,
 79                 ‘<a href="http://www.\\1" target="_blank">\\2</a>‘,
 80                 ‘<a href="\\1://\\2" target="_blank">\\3</a>‘,
 81                 ‘<a href="mailto:\\[email protected]\\2">\\[email protected]\\2</a>‘,
 82                 ‘<a href="mailto:\\[email protected]\\2">\\3</a>‘,
 83                 ‘<img src="\\1">‘,
 84                 ‘</font>‘,‘</font>‘,‘</font>‘,‘</p>‘
 85             );
 86             return preg_replace($pattern,$replace,$message);
 87         }
 88
 89         private function cuturl($url){
 90             $length = 65;
 91             $url = substr(strtolower($url),0,4) == ‘www.‘?"http://$url":$url;
 92             $urllink = "<a href=\"".$url.‘"target="_blank">‘;
 93             if(strlen($url)>$length){
 94                 $url = substr($url,0,intval($length*0.5)).‘...‘.substr($url,-intval($length*0.3));
 95             }
 96             $urllink .=$url.‘</a>‘;
 97             return $urllink;
 98         }
 99
100         private function parseURL($message){
101             $urlPattern = "/(www.|https?:\/\/|ftp:\/\/|news:\/\/|telnet:\/\/){1}([^\[\"‘]+?)(com|net|org)(\/[\w-\.\/?\%\&\=]*)?/ei";
102             return preg_replace($urlPattern,"\$this->cuturl(‘\\1\\2\\3\\4‘)",$message);
103         }
104
105         private function parseSmilies($message){
106             $pattern = array(
107                 ‘/:\)|\/wx|微笑/i‘,
108                 ‘/:@|\/fn|发怒/i‘,
109                 ‘/:kiss|\/kill|\/sa|示爱/‘,
110                 ‘/:p|\/tx|偷笑/i‘,
111                 ‘/:q|\/dk|大哭/i‘
112             );
113             $replace = array(
114                 ‘<img src="smilies/smile.png" alt="微笑">‘,
115                 ‘<img src="smilies/huffy.png" alt="发怒">‘,
116                 ‘<img src="smilies/kiss.png" alt="示爱">‘,
117                 ‘<img src="smilies/titter.png" alt="偷笑">‘,
118                 ‘<img src="smilies/cry.png" alt="大哭">‘
119             );
120             return preg_replace($pattern,$replace,$message);
121         }
122
123         private function disableKeyWords($message){
124             $keywords_disable = array("非法关键字一","非法关键字二","非法关键字三");
125             return str_replace($keywords_disable,"**",$message);
126         }
127
128         private function prasePHPCode($message){
129             $pattern = ‘/(<\?.*?\?>)/ise‘;
130             $replace = ‘"<pre style=\"background:#ddd\">".highlight_string("\\1",true)."</pre>"‘;
131             return preg_replace($pattern,$replace,$message);
132         }
133
134         private function prasePer($message){
135             return ‘<pre>‘.$message.‘</pre>‘;
136         }
137
138         private function nltobr($message){
139             return nl2br($message);
140         }
141
142         public function getSubject(){
143             return ‘<h1 align=center>‘.$this->subject.‘</h1>‘;
144         }
145
146         public function getMessage(){
147             return $this->message;
148         }
149     }
150 ?>

结果如下:

原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/8399025.html

时间: 2024-10-10 07:17:44

php开发文章发布示例(正则表达式实例开发)的相关文章

【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序

关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展程序 扩展程序是一些能够修改或增强 Chrome 浏览器功能的小程序.对于前端工程师而言,其最大的便利就是我们可以应用我们熟悉的 HTML.CSS . Javascript 等技术来制作扩展程序. 如下图所示,这些图标就是各种开发者提供的 chrome 扩展程序: 区分扩展与插件 很多人会误称扩展程

使用JSP/Servalet技术开发新闻发布系统------动态网页开发基础

什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 动态网页的特点? (1).交互性:即网页会根据用户的要求和选择而动态改变和响应.采用动态网页技术的网站可以实现与用户的交互功能. (2).自动更新:无需手动操作,便会自动生成新的页面,可以节省工作量. (3).随机性:即当不同的时间.不同的人访问同一网址时会产生不同的页面效果. 为什么需要动态网页? 静态网页不能真正与用户实现互动.静态网页的内容是固定的,当修改了网页中的元素的时候,都需要重

《Ionic 2 实例开发》发布

Ionic 2系列教程集结成册,在百度阅读上架发布,名为<Ionic 2实例开发>(点击书名将打开地址:http://yuedu.baidu.com/ebook/ba1bca51e418964bcf84b9d528ea81c759f52e47),欢迎大家捧场. 本次发布包含了,我在 博客:http://tedeum.iteye.com 天工开物网:http://www.techcave.cn 简书:http://www.jianshu.com/u/befd4004b0a4 发布的的Ionic

一步步开发自己的博客 .NET版(4、文章发布功能)百度编辑器

前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做个插件,任何网站上的技术文章都可以转发收藏 到本博客. 所以打算写个系类:<一步步搭建自己的博客> 一.一步步开发自己的博客  .NET版(1.页面布局.blog迁移.数据加载) 二.一步步开发自己的博客  .NET版(2.评论功能) 三.一步步开发自己的博客  .NET版(3.注册登录功能) 四

《flask web开发》第11章 博客文章发布表单无法显示的解决方案

有不少同学在这一章都发现自己明明按照书上一步步执行,但却在首页看不到博客文章发布表单.这个问题其实很好解决. 首先,下载一个DB Browser for SQLite.Ubuntu用户可以在终端输入以下命令: sudo apt-get install sqlitebrowser 之后用这个数据库浏览器打开flasky里的数据库,在role表中按书中第9章所述,将所有角色手工录入,并在user表中给自己的账户添加上role_id字段,这样就大功告成了! 参考: https://www.zhihu.

php:细说PHP之文章发布操作实例1

文章发布实例这个例子,因为前两章是字符串处理和正则表达式,所以重点也就用了这些内容. 首先,进的事post.php这个文件 <form method="post" action="viewthread.php" target="_blank"> <h2 align="center">发表文章演示</h2> <!-- 下面定义一组选项,使用样式表将其入在左边 --> <div

微信公众平台开发教程(四) 实例入门:机器人(附源码)

微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在线客服机器人功能.主要的功能包括:简单对话.查询天气等服务. 这里只是提供比较简单的功能,重在通过此实例来说明公众平台的具体研发过程.只是一个简单DEMO,如果需要的话可以在此基础上进行扩展. 当然后续我们还会推出比较复杂的应用实例. 二.具体实现 1.提供访问接口 这里不再赘述,参照上一章,微信公

iOS开发之详解正则表达式

本文由Charles翻自raywenderlich原文:NSRegularExpression Tutorial: Getting Started更新提示:本教程被James Frost更新到了iOS8和swift.Tutorial团队成员的Soheil Azarpour完成最初发布.正则表达式(广为所知的"regex")是一个字符串或一个字符序列来说明一种模式,把它作为一个搜索字符串-非常强大! 在一个文本编辑器或文字处理器中普通的旧式搜索只允许你进行简单的匹配.正则表达式可以实现这

Flex4/Flash+BlazeDS+JAVA+MySql 开发在线音乐播放器实例

要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演示地址 传统网络程序的开发是基于页面的.服务器端数据传递的模式,把网络程序的表现层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的.全方位的体验要求了.而富互联网应用(Rich Internet Applications,缩写为RIA)的出现就