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

Posted Angel_Kitty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:\\\\1@\\\\2">\\\\1@\\\\2</a>\',
 82                 \'<a href="mailto:\\\\1@\\\\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 ?>

结果如下:

 

以上是关于php开发文章发布示例(正则表达式实例开发)的主要内容,如果未能解决你的问题,请参考以下文章

PHP编程中经常用到的正则表达式代码分享

PHP常用的正则表达式

php的问题

正则表达式的20个示例

求php完整代码 使用正则表达式检索用户输入的查询关键字,并描红

PHP 正则表达式