fernandozueet/php-sanitize

1.0.1 2020-10-29 18:43 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:33 UTC


README

清理 PHP 值。



文档



要求

  • PHP 7.3 或更高版本
  • Composer


安装

使用 Composer 安装此包

composer require fernandozueet/php-sanitize


使用模式 数组

use FzPhpSanitize\Sanitize;

//values array
$data = [
    'title'   => 'Test Test é 123',
    'content' => "<a href=''>teste</a> <b>OK</b>",
    'test'    => "value test",
    'date'    => "01/06/1987",
    'sub'     => [
        "sub1" => "  TEST  "
    ],
];

//rules sanitize
$rules = [
    'title'    => [Sanitize::strtolower(), Sanitize::alpha(true), Sanitize::strtoupper(), Sanitize::rtrim()],
    'content'  => [Sanitize::stripTags('<a>') ],
    'date'     => [Sanitize::date('Y-m-d')],
    'sub.sub1' => [Sanitize::strtolower(), Sanitize::trim()],
];

//sanitize values
$values = Sanitize::clear($data, $rules);

输出

{
    "title": "TEST TEST",
    "content": "<a href=''>teste</a> OK",
    "teste": "value test",
    "date": "1987-06-01",
    "sub": {
        "sub1": "test"
    }
}


使用模式 单个

use FzPhpSanitize\Sanitize;

//sanitize
$value = Sanitize::cpf()->clean('43740999055');

输出

437.409.990-55


使用模式 Laravel

Laravel 5.8 或更高版本

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use FzPhpSanitize\Sanitize;

class ExampleRequest extends FormRequest
{

    /**
     * Prepare the data for validation.
     *
     * @return void
     */
    protected function prepareForValidation()
    {
        $rules = [
            'title'   => [Sanitize::strtolower(), Sanitize::alpha(true), Sanitize::strtoupper(), Sanitize::rtrim()],
            'content' => [Sanitize::stripTags('<a>') ],
        ];

        $this->merge(Sanitize::clear($this->input(), $rules));
    }

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [];
    } 

}


自定义过滤器

1- 创建类过滤器

MyFilter.php

<?php

namespace Filters\MyFilter; // <<<<<<<<<-- Your namespace here

use FzPhpSanitize\Contracts\Filter;
use FzPhpSanitize\Filters\Filters;

class MyFilter extends Filters implements Filter
{
  
    /**
     * Filter strip tags.
     * Strip HTML and PHP tags from a string.
     * 
     * @param string $value
     * @return string
     */
    public function clean($value)
    {  
       return is_string($value) ? strip_tags($value, $this->options[0] ?? null) : "";
    }
    
}

2- 在另一个 PHP 文件中创建函数以调用过滤器

MySanitizes.php

<?php

namespace YourNamespace; // <<<<<<<<<-- Your namespace here

use Filters\MyFilter;

class MySanitizes 
{
  
    /**
     * Filter strip_tags.
     * Strip HTML and PHP tags from a string.
     *
     * @param array|string $allowable_tags
     * @return MyFilter
     */
    public static function myFilter($allowable_tags = ""): MyFilter
    {
        return new MyFilter($allowable_tags);
    }
    
}

3- 使用过滤器

use YourNamespace\MySanitizes;

//sanitize
$value = MySanitizes::myFilter("<a>")->clean("<a href='#'>Link</a> <h1>Hello world!</h1>");

输出

<a href='#'>Link</a> Hello world!


过滤器



striptags

从字符串中删除 HTML 和 PHP 标签。

striptags(string $allowable_tags = "")

use FzPhpSanitize\Sanitize;

$value = Sanitize::striptags("<a>")->clean("<a href='#'>Link</a> <h1>Hello world!</h1>");

输出

<a href='#'>Link</a> Hello world!


cnpj

格式化 CNPJ 格式的数字。

cnpj()

use FzPhpSanitize\Sanitize;

$value = Sanitize::cnpj()->clean("54465939000150");

输出

54.465.939/0001-50


cpf

格式化 CPF 格式的数字。

cpf()

use FzPhpSanitize\Sanitize;

$value = Sanitize::cpf()->clean("43740999055");

输出

437.409.990-55


numeric

数字。

numeric()

use FzPhpSanitize\Sanitize;

$value = Sanitize::numeric()->clean("asdfg123456");

输出

123456


alphanumeric

从 a 到 z 的字母和数字。

alphanumeric(bool $spaces = false)

use FzPhpSanitize\Sanitize;

$value = Sanitize::alphanumeric()->clean("!@#asdfg123456");

$value2 = Sanitize::alphanumeric(true)->clean("!@#asdfg 123 456");

输出

//value
asdfg123456

//value2
asdfg 123 456


alpha

从 a 到 z 的字母。

alpha(bool $spaces = false)

use FzPhpSanitize\Sanitize;

$value = Sanitize::alpha()->clean("123456asdfg*&(");

$value2 = Sanitize::alpha(true)->clean("123456asd dfg*&(");

输出

//value
asdfg

//value2
asd dfg


url

filter_var FILTER_SANITIZE_URL

url()

use FzPhpSanitize\Sanitize;

$value = Sanitize::url()->clean("https://php.ac.cn/manual/en/function.htmlentities.phpçù");

输出

http://php.ac.cn/manual/en/function.htmlentities.php


email

filter_var FILTER_SANITIZE_EMAIL

email()

use FzPhpSanitize\Sanitize;

$value = Sanitize::email()->clean("çótest@test.com");

输出

test@test.com


strtolower

将字符串转换为小写。

strtolower()

use FzPhpSanitize\Sanitize;

$value = Sanitize::strtolower()->clean("FERNANDO ZUEET");

输出

fernando zueet


strtoupper

将字符串转换为大写。

strtoupper()

use FzPhpSanitize\Sanitize;

$value = Sanitize::strtoupper()->clean("fernando zueet");

输出

FERNANDO ZUEET


ucwords

将字符串中每个单词的首字母转换为大写。

ucwords(string $delimiters = " \t\r\n\f\v")

use FzPhpSanitize\Sanitize;

$value = Sanitize::ucwords()->clean("fernando zueet");

输出

Fernando Zueet


ucfirst

将字符串的第一个字符转换为大写。

ucfirst()

use FzPhpSanitize\Sanitize;

$value = Sanitize::ucfirst()->clean("fernando zueet");

输出

Fernando zueet


lcfirst

将字符串的第一个字符转换为小写。

lcfirst()

use FzPhpSanitize\Sanitize;

$value = Sanitize::lcfirst()->clean("Fernando zueet");

输出

fernando zueet


rtrim

从字符串的开始删除空格(或其他字符)。

rtrim(string $charlist = " \t\n\r\0\x0B")

use FzPhpSanitize\Sanitize;

$value = Sanitize::rtrim()->clean("fernando zueet    ");

输出

fernando zueet


ltrim

从字符串的开始删除空格(或其他字符)。

ltrim(string $charlist = " \t\n\r\0\x0B")

use FzPhpSanitize\Sanitize;

$value = Sanitize::ltrim()->clean("     fernando zueet");

输出

fernando zueet


trim

删除字符串开头和结尾的空格。

trim(string $charlist = " \t\n\r\0\x0B")

use FzPhpSanitize\Sanitize;

$value = Sanitize::trim()->clean("     fernando zueet    ");

输出

fernando zueet


date

日期格式。

date(string $format = 'Y-m-d')

use FzPhpSanitize\Sanitize;

$value = Sanitize::date("Y-m-d")->clean("01/06/1987");

输出

1987-06-01


type

格式化类型。

type(string $type)

$type: string bool int float array object

use FzPhpSanitize\Sanitize;

$value = Sanitize::type('string')->clean(10);

$value2 = Sanitize::type('bool')->clean('true');

$value3 = Sanitize::type('int')->clean('1234');

$value4 = Sanitize::type('float')->clean('100,5');

输出

//value
'10' 

//value2
true

//value3
1234

//value4
100.5


numberFormat

用千位分隔符格式化数字。

numberFormat(int $decimals = 0, string $decimalpoint = '.', string $separator = ',')

use FzPhpSanitize\Sanitize;

$value = Sanitize::numberFormat(2, ',', '.')->clean("1000");

输出

1.000,00


pregReplace

执行正则表达式搜索和替换。

pregReplace($pattern, $replacement)

https://php.ac.cn/manual/en/function.preg-replace.php

use FzPhpSanitize\Sanitize;

$value = Sanitize::pregReplace('/[^A-Za-z]/', '')->clean("1234asdfg");

输出

asdfg


filterVar

使用指定的过滤器过滤变量。

filterVar(int $filter = FILTER_DEFAULT, $options = null)

https://php.ac.cn/manual/en/function.filter-var.php

use FzPhpSanitize\Sanitize;

$value = Sanitize::filterVar(FILTER_SANITIZE_EMAIL)->clean("çótest@test.com");
test@test.com


贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现与安全相关的问题,请通过电子邮件发送到 fernandozueet@hotmail.com 而不是使用问题跟踪器。

鸣谢

许可证

FZ Php Sanitize 使用 MIT 许可证授权。有关更多信息,请参阅 许可证文件