首頁 後端開發 php教程 收藏一些规范化输入输出的PHP函数_PHP教程

收藏一些规范化输入输出的PHP函数_PHP教程

Jul 13, 2016 am 10:33 AM
規範化 輸入輸出

在PHP网站开发过程中会遇到很多需要转义的地方,下面推荐几个很好的函数,可以很好地增强网站的输入输出规范化问题。

1. 纯文本输出,适合input

function t($text){
	$text = h($text);
	$text = strip_tags($text);
	return $text;
}
登入後複製

2. 多行纯文本 适合textarea

function text($text)
{
    return trim(nl2br(str_replace(' ', ' ', htmlspecialchars($text))));
}
登入後複製

3. 将html换行变成回车

function br2nl($text)
{
   	return trim(preg_replace('/<br\\s*\/?'.'>/i', '', $text));
}
登入後複製

4. 输出安全的html

function h($text){
	$text = trim($text);
	$text = stripslashes($text);
	//完全过滤注释
	$text = preg_replace('/<!--?.*-->/','',$text);
	//完全过滤动态代码
	$text = preg_replace('/<\?|\?'.'>/','',$text);
	//完全过滤js
	$text = preg_replace('/<script?.*\/script>/','',$text);
	$text = str_replace('[','[',$text);
	$text = str_replace(']',']',$text);
	$text = str_replace('|','|',$text);
	//过滤换行符
	$text = preg_replace('/\r?\n/','',$text);
	//br
	$text = preg_replace('/<br(\s\/)?'.'>/i','[br]',$text);
	$text = preg_replace('/(\[br\]\s*){10,}/i','[br]',$text);
	//hr img area input
	$text = preg_replace('/<(hr|img|input|area|isindex)( [^><\[\]]*)>/i','[\1\2]',$text);
	//过滤多余html
	$text = preg_replace('/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i','',$text);
	//过滤on事件lang js
	while(preg_match('/(<[^><]+)( lang|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i',$text,$mat)){
		$text=str_replace($mat[0],$mat[1],$text);
	}
	while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){
		$text=str_replace($mat[0],$mat[1].$mat[3],$text);
	}
	//过滤合法的html标签
	while(preg_match('/<([a-z]+)[^><\[\]]*>[^><]*<\/\1>/i',$text,$mat)){
		$text=str_replace($mat[0],str_replace('>',']',str_replace('<','[',$mat[0])),$text);
	}
	//转换引号
	while(preg_match('/(\[[^\[\]]*=\s*)(\"|\')([^\2=\[\]]+)\2([^\[\]]*\])/i',$text,$mat)){
		$text=str_replace($mat[0],$mat[1].'|'.$mat[3].'|'.$mat[4],$text);
	}
	//过滤错误的单个引号
	while(preg_match('/\[[^\[\]]*(\"|\')[^\[\]]*\]/i',$text,$mat)){
		$text=str_replace($mat[0],str_replace($mat[1],'',$mat[0]),$text);
	}
	//转换其它所有不合法的 < >
	$text = str_replace('<','<',$text);
	$text = str_replace('>','>',$text);
	$text = str_replace('"','"',$text);
	//反转换
	$text = str_replace('[','<',$text);
	$text = str_replace(']','>',$text);
	$text = str_replace('|','"',$text);
	//过滤多余空格
	$text = str_replace(' ',' ',$text);
	return $text;
}
登入後複製

5. 过滤脚本代码

function cleanJs($text){
	$text = trim($text);
	$text = stripslashes($text);
	//完全过滤动态代码
	$text = preg_replace('/<\?|\?'.'>/','',$text);
	//完全过滤js
	$text = preg_replace('/<script?.*\/script>/','',$text);
	//过滤多余html
	$text = preg_replace('/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i','',$text);
	//过滤on事件lang js
	while(preg_match('/(<[^><]+)(lang|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i',$text,$mat)){
		$text=str_replace($mat[0],$mat[1],$text);
	}
	while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){
		$text=str_replace($mat[0],$mat[1].$mat[3],$text);
	}
	return $text;
}
登入後複製

6. 在编辑器中显示纯文本

function et($text)
{
	return trim(br2nl(str_replace(' ', ' ', $text )));
}
登入後複製

7. 在html编辑器中显示html

function eh($text)
{
	return trim(str_replace('"','"', $text));
}
登入後複製

8. 判断时间距离

function friendlyDate($sTime,$type = 'normal',$alt = 'false') {
	//sTime=源时间,cTime=当前时间,dTime=时间差
	$cTime = time();
	$dTime = $cTime - $sTime;
	$dDay = intval(date("Ymd",$cTime)) - intval(date("Ymd",$sTime));
	$dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
	//normal:n秒前,n分钟前,n小时前,日期
	if($type=='normal'){
		if( $dTime < 60 )
		{
   			echo $dTime."秒前";
		}
		elseif( $dTime < 3600 )
		{
   			echo intval($dTime/60)."分钟前";
		}
		elseif( $dTime >= 3600 && $dDay == 0 )
		{
   			echo intval($dTime/3600)."小时前";
		}
		elseif($dYear==0)
		{
   			echo date("m-d ,H:i",$sTime);
		}
		else
		{
   			echo date("Y-m-d ,H:i",$sTime);
		}
		//full: Y-m-d , H:i:s
	}
	elseif($type=='full')
	{
		echo date("Y-m-d , H:i:s",$sTime);
	}
}
登入後複製

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/752446.htmlTechArticle在PHP网站开发过程中会遇到很多需要转义的地方,下面推荐几个很好的函数,可以很好地增强网站的输入输出规范化问题。 1. 纯文本输出,...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何透過PHP程式碼規範規範效能最佳化 如何透過PHP程式碼規範規範效能最佳化 Aug 11, 2023 pm 03:51 PM

如何通过PHP代码规范规范性能优化引言:随着互联网的迅速发展,越来越多的网站和应用程序基于PHP语言开发。在PHP开发过程中,性能优化是一个至关重要的方面。一个高性能的PHP代码可以显著提高网站的响应速度和用户体验。本文将探讨如何通过PHP代码规范来规范性能优化,并提供一些实际的代码示例供参考。一、减少数据库查询在开发过程中,频繁的数据库查询是一个常见的性能

如何在GitLab中進行程式碼樣式檢查與標準化 如何在GitLab中進行程式碼樣式檢查與標準化 Oct 25, 2023 am 08:38 AM

如何在GitLab中進行程式碼樣式檢查和標準化程式碼的風格和規格對於團隊專案的開發非常重要。統一的程式碼規範可以提高程式碼的可讀性、可維護性和可擴展性,減少潛在的Bug和錯誤。而在團隊開發中,透過使用版本控制工具如GitLab來管理專案程式碼,可以方便地進行程式碼樣式檢查和標準化。本文將介紹如何在GitLab中進行程式碼樣式檢查和標準化,並提供具體的程式碼範例。配置代碼檢查

如何解決:Java輸入輸出錯誤:檔案讀取錯誤 如何解決:Java輸入輸出錯誤:檔案讀取錯誤 Aug 17, 2023 pm 03:21 PM

如何解決:Java輸入輸出錯誤:檔案讀取錯誤在使用Java進行檔案讀取操作時,有時會遇到檔案讀取錯誤的情況。這種錯誤可能是由於檔案路徑不正確、檔案不存在、權限不足等原因導致的。本文將介紹如何解決Java輸入輸出錯誤中的檔案讀取錯誤問題,並提供程式碼範例來說明解決方法。確認檔案路徑是否正確在Java中讀取檔案時,首先要確保檔案路徑的正確性。檔案路徑可以是絕對路徑

PyCharm程式碼標準化與格式化的實用技巧 PyCharm程式碼標準化與格式化的實用技巧 Feb 23, 2024 pm 02:54 PM

PyCharm是Python開發者常用的整合開發環境(IDE),它提供了豐富的功能和工具來提高程式碼的品質和效率。其中,程式碼規範化和格式化是編寫高品質程式碼的重要步驟之一。本文將介紹PyCharm中一些實用的技巧和功能,幫助開發者標準化並格式化Python程式碼。自動PEP8規格檢查PEP8是Python官方提供的程式碼規格指南,包含了一系列關於程式碼風格、命名規格等

C語言中scanf函數的使用方法詳解 C語言中scanf函數的使用方法詳解 Feb 21, 2024 pm 06:30 PM

C語言中scanf函數的使用方法詳解及程式碼範例C語言是一門廣泛應用於各種軟體開發的程式語言,其中的輸入輸出函數在編寫程式時起著非常重要的作用。其中,scanf函數是C語言中用於讀取標準輸入的函數之一,它可以根據特定的格式從鍵盤讀取資料並將其儲存到指定的變數中。本文將詳細介紹scanf函數的使用方法,並提供一些實例程式碼進行範例。首先,我們來看看scanf函數

PHP開發中如何最佳化表單驗證和資料輸入驗證 PHP開發中如何最佳化表單驗證和資料輸入驗證 Oct 08, 2023 am 09:17 AM

PHP開發中如何最佳化表單驗證和資料輸入驗證【引言】在Web開發中,表單驗證和資料輸入驗證是非常重要的步驟,它們能夠確保使用者輸入的資料的合法性和安全性。不僅可以避免使用者輸入錯誤或惡意輸入,還可以防止資料庫或應用程式遭受SQL注入等攻擊。本文將介紹如何最佳化PHP開發中的表單驗證和資料輸入驗證,並提供具體的程式碼範例。 【1.伺服器端驗證】第一步是在伺服器端對用戶提

Vue專案中設計RESTful API的規範化實踐 Vue專案中設計RESTful API的規範化實踐 Jun 09, 2023 pm 04:11 PM

隨著前端框架的不斷發展與普及,單頁應用程式成為Web應用程式中的主流之一。其中,Vue.js因其簡單易學和高效開發而備受開發者的喜愛。然而,與傳統Web應用程式不同,單頁應用程式需要與後端API互動來獲取資料和執行各種操作。為了使前端和後端之間的互動更加方便、高效和可維護,在Vue專案中設計RESTfulAPI的規範化實踐非常重要。 REST(Repre

c++輸入輸出語句有哪些 c++輸入輸出語句有哪些 Feb 01, 2023 pm 05:31 PM

c++輸入輸出語句有:1、scanf()語句,用於讀取從鍵盤輸入的資料;2、printf()語句,用於向標準輸出設備輸出指定的格式資訊;3、cout語句,表示標準輸出,使用cout進行輸出時需要緊接「<<」運算子;4、cin語句,表示標準輸入,使用cin進行輸入時需要緊接「>>」運算子。

See all articles