1. 程式人生 > >PHP檢測陣列中的每個值是否含有特殊字元

PHP檢測陣列中的每個值是否含有特殊字元

本文出至:新太潮流網路部落格
/**
 * [TestArray 檢測陣列是一維還是二維]
 * @E-mial [email protected]
 * @TIME   2017-04-07
 * @WEB    http://blog.iinu.com.cn
 * @param [type] $array [陣列]
 */functionTestArray($array){if(is_array($array)){foreach($array as $v){if(is_array($v)){
                $Int_Array = array('Int'=>2,'Test'
=>'檢測為二維陣列');}else{ $Int_Array = array('Int'=>1,'Test'=>'檢測為一維陣列');}}}else{ $Int_Array = array('Int'=>3,'Test'=>'檢測為不是陣列');}return $Int_Array;}/** * [剔除掉危險字元] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn * @param [資料] $val [要處理的資料] * @return [type] [description] */
function remove_xss($val){ $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','', $val); $search ='abcdefghijklmnopqrstuvwxyz'; $search .='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $search .='[email protected]#$%^&*()'; $search .='~`";:?+/={}[]-_|\'\\';for($i =0; $i < strlen($search
); $i++){ $val = preg_replace('/(&#[xX]0{0,8}'. dechex(ord($search[$i])).';?)/i', $search[$i], $val); $val = preg_replace('/(�{0,8}'. ord($search[$i]).';?)/', $search[$i], $val);}// now the only remaining whitespace attacks are \t, \n, and \r $ra1 = array('javascript','vbscript','expression','applet','meta','xml','blink','link','style','script','embed','object','iframe','frame','frameset','ilayer','layer','bgsound','title','base'); $ra2 = array('onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbeforeupdate','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onerror','onerrorupdate','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onpaste','onpropertychange','onreadystatechange','onreset','onresize','onresizeend','onresizestart','onrowenter','onrowexit','onrowsdelete','onrowsinserted','onscroll','onselect','onselectionchange','onselectstart','onstart','onstop','onsubmit','onunload'); $ra = array_merge($ra1, $ra2); $found =true;while($found ==true){ $val_before = $val;for($i =0; $i <sizeof($ra); $i++){ $pattern ='/';for($j =0; $j < strlen($ra[$i]); $j++){if($j >0){ $pattern .='('; $pattern .='(&#[xX]0{0,8}([9ab]);)'; $pattern .='|'; $pattern .='|(�{0,8}([9|10|13]);)'; $pattern .=')*';} $pattern .= $ra[$i][$j];} $pattern .='/i'; $replacement = substr($ra[$i],0,2).''. substr($ra[$i],2); $val = preg_replace($pattern, $replacement, $val);if($val_before == $val){ $found =false;}}}return $val;}/** * [getData 檢測陣列中的每個值是否含有特殊字元] * @E-mial [email protected] * @TIME 2017-05-03 * @WEB http://blog.iinu.com.cn * @param [array] $data [要檢測的陣列-一維或者二維] * @return [data] $res [返回剔除後的陣列] */function getData($data){ header('Content-type:text/html;charset=utf-8');//判斷是否為空if(!empty($data)){//檢測陣列型別 if(TestArray($data)['status']==1){ $i =0;foreach($data as $k=>$v){ $data_mer[$i][$k]= remove_xss($v); $i++;} $res['code']= $data_mer;}else{foreach($data as $k=>$v){ $data_mer[$k]= remove_xss($v);} $res['code']= $data_mer;}}else{ $res = array('status'=>2,'str'=>'資料不能為空');}return $res;}
本文出至:新太潮流網路部落格

相關推薦

PHP檢測陣列每個是否含有特殊字元

本文出至:新太潮流網路部落格 /** * [TestArray 檢測陣列是一維還是二維] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn

PHP檢測數組每個是否含有特殊字符

end mouseover onfinish -type desc bmi utf sta meta 本文出至:新太潮流網絡博客 /** * [TestArray 檢測數組是一維還是二維] * @E-mial [email protected] * @TIM

php 對比兩個陣列是否相等

$a = ['1','2','4','3'];//提交答案 $b = ['2','1','3'];//正確答案 $state = $this->diffArray($b, $a); echo '<pre>'; print_r($state);die; /**

定義一個數組,陣列初始長度由控制檯獲取 。隨後手動給陣列中每個元素賦陣列滿後將陣列長度擴充二倍並輸出,清空陣列中所有元素且繼承陣列長度,並重新進行手動新增元素,無限死迴圈直至輸出-0後結束程式。

package com.tedu; import java.util.Arrays; import java.util.Scanner; /** * 需求: * 定義一個初始陣列,陣列初始長度由控制檯獲取 * 隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍輸

PHP判斷陣列是否有重複並找出重複

可以用來測試需要唯一憑據號碼的,是否有重複值,不過一般直接使用uuid了,簡單粗暴就解決問題,這個就簡單的測試生成的資料是否有重複值吧   <?php /* * @Author: wyy * @Date: 2019-01-09 13:34:16 * @Email:

PHP陣列幾個數值求和等於指定的演算法

沒有找到PHP版本的 貼一下參考C#的 $_arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); function getSetBySum($_array, $_sum, $_index, $_current, $_return=''

PHP裡.如何定義二維陣列和賦.並且把陣列填充到table

php: require 'smarty/libs/Smarty.class.php'; $smarty = new Smarty;//設定各個目錄的路徑,這裡是安裝的重點 $smarty->template_dir ="smarty/templates/temp

解析js的鍵對 及 陣列的定義 及檢測陣列是否有重複的資料

要解析的資料 var obj = {       "contractName":"合同","contractType":"合同型別","invoiceDate":"付款時間","amount":"付款銀行",       "taxAmount":"付款金額","paymen

php檢查陣列是否存在一個

PHP in_array() 函式檢查陣列中是否存在某個值,如果存在則返回 TRUE ,否則返回 FALSE 。 語法: bool in_array( mixed needle, array a

php陣列的鍵名作為變數名鍵作為變數

<?php /** * php 把陣列中的鍵名所為變數名鍵值作為變數 */ $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>5,'e'=

php 根據陣列的指定鍵排序,根據陣列指定鍵分組

一、 根據陣列中的指定鍵值排序1.1 原陣列如下:    $person =  array(                     array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),   

js的二分法求陣列某個的索引

為了解決最後一個數字無法顯示正確索引的問題,我直接加了一個判斷最後一個索引的判斷 <!DOCTYPE html> <html> <head> <title>123</title> <meta charset="utf-

通過泛型查詢不同型別陣列

實現效果:        知識運用:(泛型方法)    實現程式碼: public int Finder<T>(T[] arr, T item) //定義泛型方法 { for (int i = 0; i < arr.

分享:PHP陣列找到指定元素的位置

群裡有人問,有個陣列五個元素 分為1到5  現在要求 迴圈找出3元素的索引,怎麼做效能才是最高。   我不知道哪個效能最高,但是我想提出可以用多種方式進行查詢,然後進行比較選擇。 我想,最簡單最基礎的 應該是迴圈,迴圈到它,那就是它

不使用迴圈,建立一個長度為100的陣列,並使陣列每個等於它的下標(待更新)

這是我一道很早接觸的題目,整理過幾次都覺得不夠好。原出題人主要靠對es6語法的掌握,結果知乎大神們五花八門的答案真的重新整理我對JavaScript的認識。 這裡,先記錄長度較短的答案,以後再解釋難度較大的答案。 // 先建立一個長為100的稀疏陣列 let

PHP陣列刪除元素的四種方法例項

刪除一個元素,且保持原有索引不變 使用 unset 函式,示例如下: <?php   $array = array(0 => "a", 1 => "b", 2 => "c")

js間隔一段時間列印陣列

間隔一段時間列印陣列中的一個值 在我們的實際操作中,時常會遇到這樣一個問題,比如:有一個數組 arr = [1,2,3,4,5]; 要求間隔1s中列印陣列中的一個值,與停止1s在列印陣列中的值 先列舉兩個停止1s列印陣列中的值 利用for迴圈和定時器來實現

javascript計算陣列的出現次數

需求 返回一個數組某值出現的次數 輸入:一個數組 輸出:需要計數的元素 程式碼 /* 傳入一個數組 返回一個數組某值出現的次數 */ const countOccurences

用棧來實現求陣列每個元素的左邊第一個小和右邊第一個小 -2014-03-26 20:35

陣列中每個元素的左邊第一個小和右邊第一個小: 如[2,1,5,6,2,3]中5左邊第一個小的元素是1,右邊第一個小的元素是2;如何在複雜度為O(n)的情況下計算出所有元素的左邊第一個小和右邊第一個小? 這是leetcode中的“ Largest Rectangle in H