欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php:细说PHP之稿子发布操作实2

程序员文章站 2022-05-28 23:53:59
...
php:细说PHP之文章发布操作实2

然后我们来看看,最核心的acticle_class.php怎么运作。

subject=$this->html2Text($subject); //为文章标题赋初值,将HTML标记转为实体              			if(!empty($parse)) {            //如果用户选择了对文章的操作选项则条件成功				foreach($parse as $value) {  //用户选择了几个文章操作选项则循环几次					switch($value) {      //根据用户选择的不同选项,调用不同的内部方法处理						case 1:         //如果用户选择“删除HTML标签”选项时条件成立							$message=$this->delHtmlTags($message);  							break;						case 2:        //如果选择“转换HTML标签为实体”选项时条件成立							$message=$this->html2Text($message);							break;							case 3:        //如果用户选择“使用UBB代码”选项时条件成立							$message=$this->UBBCode2Html($message);							break;						case 4:        //如果用户选择“开启URL识别”选项时条件成立							$message=$this->parseURL($message);							break;						case 5:        //如果用户选择“使用表情”选项时条件成立							$message=$this->parseSmilies($message);							break;						case 6:        //如果用户选择“禁用非法关键字”选项时条件成立							$message=$this->disableKeyWords($message);							break;						case 7:        //如果用户选择“PHP代码设为高亮”选项时条件成立							$message=$this->prasePHPCode($message);							break;						case 8:        //如果用户选择“原样显示”选项时条件成立							$message=$this->prasePer($message);							break;						case 9:        //如果用户选择“同步换行”选项时条件成立							$message=$this->nltobr($message);							break;					}				}				}				$this->message=$message;         //给成员属性$message赋初值,		}				private function delHtmlTags($message) {  //此私有方法有来删除HTML标记			return strip_tags($message);         //调用字符串处理函数删除HTML标记		}		private function html2Text($message) {   //此私有方法有来将HTML标记转为HTML实体			return htmlSpecialChars(stripSlashes($message));  //调用字符串处理函数进行操作		}		private function UBBCode2Html($message) {   //此私有方法有来解析UBB代码			$pattern=array('/\[b\]/i', '/\[\/b\]/i', '/\[i\]/i',   //声明正则表达式的模板数组			       	'/\[\/i\]/i', '/\[u\]/i', '/\[\/u\]/i',              				'/\[font=([^\[\', '', '',    //声明正则表达式的替换数组				'', '', '',                     				'',                           				'',                         				'',                          				'',                 				'

', '\\2', '\\3', '\\1@\\2', '\\3', 'php:细说PHP之稿子发布操作实2', '

', '
', '
', '' ); return preg_replace($pattern, $replace, $message); //调用正则表达式的替换函数 } private function cuturl($url) { //此私有方法用来剪切长的URL,并加上链接 $length = 65; $urllink = "'; if(strlen($url) > $length) { //如果URL长度大于65则剪切 $url = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3)); } $urllink .= $url.''; return $urllink; } private function parseURL($message) { //此私有方法用来解析URL,将其加上链接$urlPattern="/(www.|https?:\/\/|ftp:\/\/|news:\/\/|telnet:\/\/){1}([^\[\"']+?)(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/ei"; return preg_replace($urlPattern, "\$this->cuturl('\\1\\2\\3\\4')", $message); } private function parseSmilies($message) { //此方法用来解析表情 $pattern=array('/:\)|\/wx|微笑/i', //声明表情的正则表达式模板数组 '/:@|\/fn|发怒/i', '/:kiss|\/kill|\/sa|示爱/', '/:p|\/tx|偷笑/i', '/:q|\/dk|大哭/i' ); $replace=array('php:细说PHP之稿子发布操作实2', //声明表情的替换数组 'php:细说PHP之稿子发布操作实2', 'php:细说PHP之稿子发布操作实2', 'php:细说PHP之稿子发布操作实2', 'php:细说PHP之稿子发布操作实2'); return preg_replace($pattern, $replace, $message); //调用正则表达式的替换函数 } private function disableKeyWords($message) { //此方法用来屏蔽文章中的非法关键字 $keywords_disable=array("非法关键字一","非法关键字二","非法关键字三"); return str_replace($keywords_disable,"**",$message); } private function prasePHPCode($message) { //此方法用来将PHP代码设置为高亮 $pattern='/()/ise'; $replace='"
".highlight_string("\\1",true)."
"'; return preg_replace($pattern, $replace, $message); } private function prasePer($message) { //此方法用来将文章原样输出,即加上
标记			return '
'.$message.'
'; } private function nltobr($message) { //此私有方法用来将换行符号转为
标记 return nl2br($message); //调用字符串处理函数nl2br() } public function getSubject() { //此方法为公有的,返回文章的标题 return '

'.$this->subject.'

'; } public function getMessage() { //此方法为公有的,返回文章的主体内容 return $this->message; } }?>
该类主要内容就是它的构造方法,遍历parse数组里面的每一项,对message做一次处理。

基本上都是直接调用php自带的字符串的处理函数,还有问题就是利用正则表达式替换。

preg_replace($pattern, $replace, $message),第一个参数表示正则表达式模式数组,第二个参数表示将这个遇到正则表达式替换后的内容,也是数组,两者应该是一一对应的。

正则表达式基本上就是/XXXXXX /yyy 以/... /表示分隔,yyy表示匹配参数 中间有|表示或,具体可以自己参考网上资料或者书。常常用在我们的用户登录上。


php:细说PHP之稿子发布操作实2

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频