検索

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

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

<?php class Acticle {   //声明一个文章类,其中有两个成员属性标题和内容,如果需要还可以更多			private $subject;        //文章的标题成员属性		private $message;       //文章的主本内容成员属性				//构造方法,通过传入文章标题和文章主体和文章的操作选项数组创建文章对象		function __construct($subject=" ",$message=" ", $parse=array()) {			$this->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=([^\[\', '', '<i>',    //声明正则表达式的替换数组				'</i>', '<u>', '</u>',                     				'<font face="\\1">',                           				'<font color="\\1">',                         				'<font size="\\1">',                          				'<font style='\"font-size:'>',                 				'<p align="\\1">',                             				'<a href="http://www.%5C%5C1" target="_blank">\\2</a>', 				'<a href="%5C%5C1://%5C%5C2" target="_blank">\\3</a>',       				'<a href="mailto:%5C%5C1@%5C%5C2">\\1@\\2</a>',          				'<a href="mailto:%5C%5C1@%5C%5C2">\\3</a>',              				'<img  src="/static/imghwm/default1.png" data-src="\\1" class="lazy" alt="php:PHP原稿公開操作の詳細説明2" >',                            				'</p></font>', '</font>', '</font>', ''             			);			return preg_replace($pattern, $replace, $message);  //调用正则表达式的替换函数		}		private function cuturl($url) {      //此私有方法用来剪切长的URL,并加上链接			$length = 65;			$urllink = "<a href="%5C%22%22.(substr(strtolower(%24url)," : target="_blank">';			if(strlen($url) > $length) {    //如果URL长度大于65则剪切				$url = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));			}			$urllink .= $url.'</a>';			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('<img src="/static/imghwm/default1.png" data-src="smilies/smile.gif" class="lazy" alt="微笑">',  //声明表情的替换数组					'<img src="/static/imghwm/default1.png" data-src="smilies/huffy.gif" class="lazy" alt="发怒">',					'<img src="/static/imghwm/default1.png" data-src="smilies/kiss.gif" class="lazy" alt="示爱">',					'<img src="/static/imghwm/default1.png" data-src="smilies/titter.gif" class="lazy" alt="偷笑">',					'<img src="/static/imghwm/default1.png" data-src="smilies/cry.gif" class="lazy" alt="大哭">');			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='"<pre   style="max-width:90%"background:#ddd\"'>".highlight_string("\\1",true)."
"'; return preg_replace($pattern, $replace, $message); } private function prasePer($message) { //此方法用来将文章原样输出,即加上
标记			return '<pre class="brush:php;toolbar:false">'.$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表示匹配参数 中间有|表示或,具体可以自己参考网上资料或者书。常常用在我们的用户登录上。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
华为GT3 Pro和GT4的差异是什么?华为GT3 Pro和GT4的差异是什么?Dec 29, 2023 pm 02:27 PM

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

修复:截图工具在 Windows 11 中不起作用修复:截图工具在 Windows 11 中不起作用Aug 24, 2023 am 09:48 AM

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

如何修复无法连接到iPhone上的App Store错误如何修复无法连接到iPhone上的App Store错误Jul 29, 2023 am 08:22 AM

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

vue3中怎么使用element-plus调用messagevue3中怎么使用element-plus调用messageMay 17, 2023 pm 03:52 PM

vue3使用element-plus调用message环境:vue3+typescript+element-plus1.全局引入element之后element已经在app.config.globalProperties添加了全局方法$message所以在optionsAPI中可以直接使用mounted(){(thisasany).$message.success("this.$message");}2.在CompositionAPI中setup方法传入了两个变量props和

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

watch4pro好还是gt好watch4pro好还是gt好Sep 26, 2023 pm 02:45 PM

watch4pro和gt各自具有不用的特点和适用场景,如果注重功能的全面性、高性能和时尚外观,同时愿意承担较高的价格,那么Watch 4 Pro可能更适合。如果对功能要求不高,更注重电池续航和价格的合理性,那么GT系列可能更适合。最终的选择应根据个人需求、预算和喜好来决定,建议在购买前仔细考虑自己的需求,并参考各种产品的评测和比较,以做出更明智的选择。

如何使用 iPadOS 17.4 优化 iPad 电池寿命如何使用 iPadOS 17.4 优化 iPad 电池寿命Mar 21, 2024 pm 10:31 PM

如何使用iPadOS17.4优化iPad电池寿命延长电池续航时间是移动设备体验的关键,iPad是一个很好的例子。如果您觉得iPad电池消耗速度过快,不用担心,在iPadOS17.4中有许多技巧和调整可以显著延长设备的运行时间。本深入指南的目标不仅仅是提供信息,而是改变您使用iPad的方式,增强您的整体电池管理,并确保您可以在无需充电的情况下更长时间地依赖您的设备。通过采用此处概述的做法,您朝着更高效、更谨慎地使用技术迈出了一步,这些技术是根据您的个人需求和使用模式量身定制的。识别主要的能量消耗者

Microsoft正在推出Windows 11 23H2版本到带有Copilot的发布预览频道Microsoft正在推出Windows 11 23H2版本到带有Copilot的发布预览频道Sep 28, 2023 pm 07:17 PM

每个人都在期待今天的Windows1123H2发布。事实上,Microsoft刚刚启动了对发布预览版的更新,这是正式发布阶段之前最接近的频道。被称为Build22631的Microsoft表示,他们正在推出新的更名聊天应用程序,电话链接和一起玩小部件,这些小部件在过去几个月中已在其他内部渠道中进行了测试。“这个新的更新将具有与Windows11版本22H2相同的服务分支和代码库,并将与所有新宣布的功能累积,包括Windows中的Copilot(预览版),”Microsoft承诺。雷德蒙德官员进一

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。