4848use const FILTER_UNSAFE_RAW ;
4949use const FILTER_VALIDATE_BOOLEAN ;
5050use const MB_CASE_TITLE ;
51+ use const PHP_VERSION_ID ;
5152
5253/**
5354 * Class Filters
55+ *
5456 * @package Inhere\Validate\Filter
5557 */
5658final class Filters
@@ -109,6 +111,7 @@ public static function bool($val, $nullAsFalse = false): bool
109111
110112 /**
111113 * 过滤器删除数字中所有非法的字符。
114+ *
112115 * @note 该过滤器允许所有数字以及 . + -
113116 *
114117 * @param mixed $val 要过滤的变量
@@ -145,14 +148,15 @@ public static function abs($val): int
145148
146149 /**
147150 * 过滤器删除浮点数中所有非法的字符。
151+ *
148152 * @note 该过滤器默认允许所有数字以及 + -
149153 *
150- * @param mixed $val 要过滤的变量
154+ * @param mixed $val 要过滤的变量
151155 * @param null|int $decimal
152156 * @param int $flags 标志
153- * FILTER_FLAG_ALLOW_FRACTION - 允许小数分隔符 (比如 .)
154- * FILTER_FLAG_ALLOW_THOUSAND - 允许千位分隔符(比如 ,)
155- * FILTER_FLAG_ALLOW_SCIENTIFIC - 允许科学记数法(比如 e 和 E)
157+ * FILTER_FLAG_ALLOW_FRACTION - 允许小数分隔符 (比如 .)
158+ * FILTER_FLAG_ALLOW_THOUSAND - 允许千位分隔符(比如 ,)
159+ * FILTER_FLAG_ALLOW_SCIENTIFIC - 允许科学记数法(比如 e 和 E)
156160 *
157161 * @return mixed
158162 */
@@ -175,12 +179,12 @@ public static function float($val, $decimal = null, $flags = FILTER_FLAG_ALLOW_F
175179 *
176180 * @param string|array $val
177181 * @param int $flags 标志
178- * FILTER_FLAG_NO_ENCODE_QUOTES - 该标志不编码引号
179- * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
180- * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 127 以上的字符
181- * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
182- * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 127 以上的字符
183- * FILTER_FLAG_ENCODE_AMP - 把 & 字符编码为 &
182+ * FILTER_FLAG_NO_ENCODE_QUOTES - 该标志不编码引号
183+ * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
184+ * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 127 以上的字符
185+ * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
186+ * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 127 以上的字符
187+ * FILTER_FLAG_ENCODE_AMP - 把 & 字符编码为 &
184188 *
185189 * @return string|array
186190 */
@@ -276,7 +280,7 @@ public static function lower($val): string
276280 public static function lowercase ($ val ): string
277281 {
278282 if (!$ val || !is_string ($ val )) {
279- return is_int ($ val ) ? (string )$ val : '' ;
283+ return is_int ($ val ) ? (string )$ val : '' ;
280284 }
281285
282286 if (function_exists ('mb_strtolower ' )) {
@@ -533,14 +537,15 @@ public static function stripTags($val, $allowedTags = null): string
533537
534538 /**
535539 * 去除 URL 编码不需要的字符。
540+ *
536541 * @note 与 urlencode() 函数很类似。
537542 *
538- * @param string $val 要过滤的数据
543+ * @param string $val 要过滤的数据
539544 * @param int $flags 标志
540- * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
541- * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
542- * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
543- * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
545+ * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
546+ * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
547+ * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
548+ * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
544549 *
545550 * @return string
546551 */
@@ -560,17 +565,23 @@ public static function encoded(string $val, int $flags = 0): string
560565 */
561566 public static function quotes (string $ val ): string
562567 {
563- return (string )filter_var ($ val , FILTER_SANITIZE_MAGIC_QUOTES );
568+ $ flag = FILTER_SANITIZE_MAGIC_QUOTES ;
569+ if (PHP_VERSION_ID > 70300 ) {
570+ /** @noinspection PhpElementIsNotAvailableInCurrentPhpVersionInspection */
571+ $ flag = FILTER_SANITIZE_ADD_SLASHES ;
572+ }
573+
574+ return (string )filter_var ($ val , $ flag );
564575 }
565576
566577 /**
567578 * like htmlspecialchars(), HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
568579 *
569580 * @param string $val
570581 * @param int $flags 标志
571- * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
572- * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
573- * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
582+ * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
583+ * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
584+ * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
574585 *
575586 * @return string
576587 */
@@ -639,6 +650,7 @@ public static function cut($string, $start = 0, $length = 0): string
639650
640651 /**
641652 * url地址过滤 移除所有不符合 url 的字符
653+ *
642654 * @note 该过滤器允许所有的字母、数字以及 $-_.+!*'(),{}|\^~[]`"><#%;/?:@&=
643655 *
644656 * @param string $val 要过滤的数据
@@ -677,11 +689,11 @@ public static function email($val): string
677689 *
678690 * @param string $string
679691 * @param int $flags 标志
680- * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
681- * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
682- * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
683- * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
684- * FILTER_FLAG_ENCODE_AMP - 把 & 字符编码为 &
692+ * FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字符
693+ * FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字符
694+ * FILTER_FLAG_ENCODE_LOW - 编码 ASCII 值在 32 以下的字符
695+ * FILTER_FLAG_ENCODE_HIGH - 编码 ASCII 值在 32 以上的字符
696+ * FILTER_FLAG_ENCODE_AMP - 把 & 字符编码为 &
685697 *
686698 * @return string|mixed
687699 */
0 commit comments