traderinteractive/filter-strings

用于验证字符串的过滤实现

v4.0.1 2024-01-11 14:38 UTC

This package is auto-updated.

Last update: 2024-09-11 15:57:27 UTC


README

Build Status Scrutinizer Code Quality Coverage Status

Latest Stable Version Latest Unstable Version License

Total Downloads Daily Downloads Monthly Downloads

用于验证字符串内容以及一些常见字符串格式的过滤实现。

要求

需要 PHP 7.0 或更高版本,并使用 composer 安装其他 PHP 依赖。有关详细信息,请参阅composer 规范

安装

可以使用 composer 将 filter-strings-php 安装到您的项目中。在项目中使用此库的推荐方法是将 composer.json 文件添加到您的项目。以下内容将 filter-strings-php 添加为依赖项

composer require traderinteractive/filter-strings

功能

Strings::filter

此过滤器验证参数是否为字符串。第二个参数可以设置为 true 以允许通过 null 值而不会出错(它们将保持 null 而不转换为 false)。最后几个参数指定字符串的长度范围。默认范围是 1+,因此空字符串默认失败。

以下检查 $value 是否为非空字符串。

\TraderInteractive\Filter\Strings::filter($value);

Strings::concat

此过滤器将给定的 $value、$prefix 和 $suffix 连接起来,并返回结果字符串。

$value = \TraderInteractive\Filter\Strings::concat('middle', 'begining_', '_end');
assert($value === 'begining_middle_end');

Strings::translate

此过滤器将接受一个字符串值并返回在给定的 $valueMap 中找到的翻译值。

$value = \TraderInteractive\Filter\Strings::translate('active', ['inactive' => 'X', 'active' => 'A']);
assert($value === 'A');

Strings::explode

此过滤器本质上是对内置的 explode 方法的包装,以使它能够与 Filterer 一起使用。它还默认使用 , 作为分隔符。例如

$value = \TraderInteractive\Filter\Strings::explode('abc,def,ghi');
assert($value === ['abc', 'def', 'ghi']);

Strings::compress

此过滤器会从给定的字符串中删除多余的空间。

$value = \TraderInteractive\Filter\Strings::compress(' a string    with lots of    whitespace   ');
assert($value === 'a string with lots of whitespace');

此过滤器还可以将垂直空白(如换行符)替换为单个空格。

$value = \TraderInteractive\Filter\Strings::compress(" a string\nwith lots\nof    \nnewlines\n   ", true);
assert($value === 'a string with lots of newlines');

Strings::redact

此过滤器将从字符串中删除指定的单词,或者可选地用替换字符替换这些单词的每个字母。

第二个参数指定应替换的单词,可以是字符串数组或返回字符串数组的可调用函数。

第三个参数指定替换字符。如果为空,则单词将被完全删除。如果提供包含多个字符的字符串,则仅使用第一个字符。

$value = \TraderInteractive\Filter\Strings::redact('a string with some unwanted words', ['unwanted', 'words'], '*');
assert($value === 'a string with some ******** *****');

Strings::stripTags

此过滤器将从字符串中删除 HTML、XML 和 PHP 标签。此过滤器也接受 null 值,将返回 null。

第二个、可选的参数指定要替换移除的 HTML 和 XML 标签的替换字符串。PHP 标签将被删除而不进行替换。

\TraderInteractive\Filter\Strings::stripTags('<div>a string with<br/>tags</div>', ' ');
assert($value === ' a string with tags ');

Url::filter

此过滤器根据 RFC2396 验证参数是否为 URL 字符串。第二个参数可以设置为 true 以允许通过 null 值而不会出错(它们将保持 null 而不转换为 false)。

以下检查 $value 是否为 URL。

\TraderInteractive\Filter\Url::filter($value);

Email::filter

此过滤器验证参数是否为电子邮件。

以下检查 $value 是否为电子邮件。

\TraderInteractive\Filter\Email::filter($value);

Json::validate

此过滤器验证值是否为有效的 JSON 格式。

第二个参数可以设置为 true 以允许通过 null 值而不会出错。

第三个参数用于确定允许的最大递归深度。

以下代码检查$value是否为有效的JSON字符串。

\TraderInteractive\Filter\Json::validate($value);

Json::parse

此过滤器将有效的JSON字符串解析为数组、整数、双精度浮点数或布尔值。无效的JSON将引发错误。

第二个参数可以设置为 true 以允许通过 null 值而不会出错。

第三个参数用于确定允许的最大递归深度。

以下代码检查$value是否为有效的JSON字符串并将其解析为数组。

$value = '{ "string": "value", "array": [1, 2, 3] }';
\TraderInteractive\Filter\Json::parse($value);
assert($value === ['string' => 'value', 'array' => [1, 2, 3]]);

XmlFilter::filter

此过滤器确保给定的字符串是有效的XML。

$value = "<root><outer><inner>value</inner></outer></root>";
$filtered = \TraderInteractive\Filter\XmlFilter::filter($value);
assert($value === $filtered);

XmlFilter::extract

此过滤器接受一个XML字符串和一个xpath。它将返回在xpath中找到的单个元素。

$value = <<<XML
<?xml version="1.0"?>
<books> 
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developers Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>An in-depth look at creating applications with XML.</description>
    </book>
    <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2000-12-16</publish_date>
        <description>A former architect battles corporate zombies</description>
    </book>
</books>
XML;
$xpath = '//book[@id="bk102"]';

$filtered = \TraderInteractive\Filter\XmlFilter::extract($value, $xpath);
$expected = <<<XML
<book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
    <description>A former architect battles corporate zombies</description>
</book>
XML;
assert($filtered === $expected);

XmlFilter::validate

此过滤器接受一个XML字符串和一个XSD文件的文件路径。它确保给定的XML使用给定的XSD有效,并返回原始的XML。

$value = <<<XML
<?xml version="1.0"?>
<books> 
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developers Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>An in-depth look at creating applications with XML.</description>
    </book>
    <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2000-12-16</publish_date>
        <description>A former architect battles corporate zombies</description>
    </book>
</books>
XML;
$xsdFilePath = 'books.xsd';
$filtered = \TraderInteractive\Filter\XmlFilter::validate($value, $xsdFilePath);
assert($filtered === $value);

联系方式

开发者可以通过以下方式联系:

项目构建

在PATH中检出代码,安装Composer并运行

./vendor/bin/phpcs
./vendor/bin/phpunit

有关我们构建过程的更多信息,请参阅我们的贡献指南