traderinteractive / filter-strings
用于验证字符串的过滤实现
Requires
- php: ^7.3 || ^8.0
- traderinteractive/exceptions: ^2.0
Requires (Dev)
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.2
Suggests
- ext-SimpleXML: Required for XML filters
- ext-dom: Required for XML validation filters
- ext-json: Required for JSON filters
- ext-libxml: Required for XML validation filters
README
用于验证字符串内容以及一些常见字符串格式的过滤实现。
要求
需要 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
有关我们构建过程的更多信息,请参阅我们的贡献指南。