| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | <?phpnamespace KIF\String;/** * * 数据过滤处理类 * @author gaoxiaogang@gmail.com * */class Filter {	/**	 *	 * 过滤方法:htmlspecialchars	 * @var string	 */	const HTMLSPECIALCHARS = 'htmlspecialchars';	/**	 *	 * 过滤方法:strip_tags	 * @var string	 */	const STRIP_TAGS = 'strip_tags';	const STRIP_SELECTED_TAGS = 'strip_selected_tags';	const STRIP_SCRIPT = 'strip_script';	const TRIM = 'trim';	static private $filters = array(		self::HTMLSPECIALCHARS,		self::STRIP_TAGS,		self::STRIP_SELECTED_TAGS,		self::STRIP_SCRIPT,		self::TRIM,	);	/**	 *	 * 是否有效的过滤方法	 * @param string $handle	 * @return boolean	 */	static public function isValid($filter) {		return in_array($filter, self::$filters);	}	/**	 *	 * 把html标签转化为字符串html	 * @param string $content	 * @return string	 */	static public function htmlspecialchars($content, $options = null) {		if (is_null($options)) {			$options = ENT_QUOTES;		}		return htmlspecialchars($content, $options, "UTF-8");	}	/**	 *	 * 从字符串中去除 HTML 和 PHP 标记	 * @param string $content 输入字符串	 * @param string $allowable_tags 使用可选的第二个参数指定不被去除的字符列表	 * HTML 注释和 PHP 标签也会被去除。这里是硬编码处理的,所以无法通过 allowable_tags 参数进行改变。	 * @return string	 */	static public function strip_tags($content, $allowable_tags = null) {		return strip_tags($content, $allowable_tags);	}	/**	 *	 * 与 strip_tags 相反,只去除参数$stripable_tags里指定的标签	 * @param string $content 输入字符串	 * @param string $stripable_tags 使用可选的第二个参数指定被去除的字符列表	 * @return string	 */	static public function strip_selected_tags($content, $stripable_tags = null) {		if (is_null($stripable_tags)) {			$stripable_tags = '';		}		preg_match_all("/<([^>]+)>/i", $stripable_tags, $allTags, PREG_PATTERN_ORDER);		foreach ($allTags[1] as $tag){			$content = preg_replace('/<\/?'.$tag."[^>]*>/iU","",$content);		}		return $content;	}	/**	 *	 * 去除script标签	 * @param string $content 输入字符串	 * @return string	 */	static public function strip_script($content) {		return self::strip_selected_tags($content, "<script>");	}	/**	 *	 * 去除首尾空格	 * @param string $content 输入字符串	 * @return string	 */	static public function trim($content) {		return trim($content);	}		/**	 * 过滤数组中的空值,并对非空值做trim处理	 * #支持对多维数组的处理	 * @param array $input	 * @param boolean $htmlspecialchars // html转义,默认:false 不做转义	 * @param array	 */	static public function arrayfilter(array $input, $htmlspecialchars = false) {		if (!is_array($input)) {			return $input;		}				$result = array();		foreach ($input as $key => $value) {			if (is_scalar($value)) {				$tmp_value = trim($value);				if (empty($tmp_value)) {					continue;				}				$result[$key] = $htmlspecialchars ? htmlspecialchars(trim($value)) : trim($value);			} else if(is_array($value)){				if (empty($value)) {					continue;				}								$tmp_arr = self::arrayfilter($value, $htmlspecialchars);				if (empty($tmp_arr)) {					continue;				}								$result[$key] = $tmp_arr;			} else {				$result[$key] = $htmlspecialchars ? htmlspecialchars($value) : $value;			}					}				return $result;	}}
 |