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开发文章发布示例(正则表达式实例开发)的主要内容,如果未能解决你的问题,请参考以下文章