madkom / regex
PHP正则表达式函数的PCRE包装器
1.0.0
2016-03-04 18:37 UTC
Requires
- php: ~7
Requires (Dev)
- clover/dump: dev-master
- henrikbjorn/phpspec-code-coverage: @dev
- instaclick/object-calisthenics-sniffs: @dev
- jakub-onderka/php-console-highlighter: 0.*
- jakub-onderka/php-parallel-lint: 0.*
- mdarse/phpunit-notifier: @dev
- phpspec/phpspec: @dev
- phpspec/prophecy: dev-master
- phpunit/phpcov: *
- phpunit/phpunit: 5.*
- satooshi/php-coveralls: dev-master
- squizlabs/php_codesniffer: ^2.3
- symfony/var-dumper: ^3.0
This package is not auto-updated.
Last update: 2024-09-20 19:04:25 UTC
README
该包以面向对象的方式实现了各种PCRE元素。包括 模式、匹配器、替换器 和 分割器 对象。
所有方法都可以抛出异常: BacktrackLimitException、BadUtf8Exception、BadUtf8OffsetException、InternalException、JitStackLimitException 和 RecursionLimitException,因此您不必使用 preg_last_error()
和比较定义来检查;
安装
使用Composer安装
composer require madkom/regex
使用方法
使用模式
use Madkom\RegEx\Pattern; $pattern = new Pattern('<((?=[^!])(/)?([^>]+))>'); $pattern->getPattern(); // "/<((?=[^!])(\/)?([^>]+))>/"
匹配模式
use Madkom\RegEx\Matcher; use Madkom\RegEx\Pattern; $pattern = new Pattern('<((?=[^/]+)[^>]+)>'); $matcher = new Matcher($pattern, 's'); $subject = <<<EOL <!DOCTYPE html> <html> <head><title>Ala ma kota</title></head> <body><h1>Ala ma kota</h1></body> </html> EOL; $match = $matcher->match($subject); //array:2 [ // 0 => "<!DOCTYPE html>" // 1 => "!DOCTYPE html" //]
匹配模式并捕获所有匹配项
use Madkom\RegEx\Matcher; use Madkom\RegEx\Pattern; $pattern = new Pattern('<((?=[^/]+)[^>]+)>'); $matcher = new Matcher($pattern, 's'); $subject = <<<EOL <!DOCTYPE html> <html> <head><title>Ala ma kota</title></head> <body><h1>Ala ma kota</h1></body> </html> EOL; $match = $matcher->matchAll($subject); //array:2 [ // 0 => array:6 [ // 0 => "<!DOCTYPE html>" // 1 => "<html>" // 2 => "<head>" // 3 => "<title>" // 4 => "<body>" // 5 => "<h1>" // ] // 1 => array:6 [ // 0 => "!DOCTYPE html" // 1 => "html" // 2 => "head" // 3 => "title" // 4 => "body" // 5 => "h1" // ] //]
替换并使用替换
use Madkom\RegEx\Replacer; use Madkom\RegEx\Pattern; $pattern = new Pattern('<((?=[^!])(/)?([^>]+))>'); $replacer = new Replacer($pattern, 's'); $subject = <<<EOL <!DOCTYPE html> <html> <head><title>Ala ma kota</title></head> <body><h1>Ala ma kota</h1></body> </html> EOL; $replaced = $replacer->replace($subject, '<\\2xhtml:\\3>'); //<!DOCTYPE html>\n //<xhtml:html>\n //<xhtml:head><xhtml:title>Ala ma kota</xhtml:title></xhtml:head>\n //<xhtml:body><xhtml:h1>Ala ma kota</xhtml:h1></xhtml:body>\n //</xhtml:html>
替换并使用处理程序
use Madkom\RegEx\Replacer; use Madkom\RegEx\Pattern; $pattern = new Pattern('<((?=[^!])(/)?([^>]+))>'); $replacer = new Replacer($pattern, 's'); $subject = <<<EOL <!DOCTYPE html> <html> <head><title>Ala ma kota</title></head> <body><h1>Ala ma kota</h1></body> </html> EOL; $replaced = $replacer->replaceWith($subject, function ($match) { return "<{$match[2]}xhtml:{$match[3]}>"; }); //<!DOCTYPE html>\n //<xhtml:html>\n //<xhtml:head><xhtml:title>Ala ma kota</xhtml:title></xhtml:head>\n //<xhtml:body><xhtml:h1>Ala ma kota</xhtml:h1></xhtml:body>\n //</xhtml:html>
分割
use Madkom\RegEx\Splitter; use Madkom\RegEx\Pattern; $subject = "html, simple, kayword, complex keyword, keyword with ; semicolon"; $pattern = new Pattern('([,]\s*)'); $splitter = new Splitter($pattern); $splitted = $splitter->split($subject); //array:5 [ // 0 => "html" // 1 => "simple" // 2 => "kayword" // 3 => "complex keyword" // 4 => "keyword with ; semicolon" //]
在数组中grep
use Madkom\RegEx\Grepper; use Madkom\RegEx\Pattern; $subjects = [ '<a href="http://madkom.pl">madkom.pl</a>', '<a href="http://google.pl">google.pl</a>', '<a href="http://bing.com">bing.com</a>', '<a href="https://example.pl">example.pl</a>', '<a href="https://example.org">example.org</a>', ]; $pattern = new Pattern('(http[s]?://[a-z0-9]+\.pl)'); $grepper = new Grepper($pattern, 'iU'); $grepped = $grepper->grep($subjects); //array:3 [ // 0 => "<a href="http://madkom.pl">madkom.pl</a>" // 1 => "<a href="http://google.pl">google.pl</a>" // 3 => "<a href="https://example.pl">example.pl</a>" //]
许可证
MIT许可证(MIT)
版权所有 (c) 2016 Madkom S.A.
特此授予任何获得本软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担责任,无论该责任基于合同、侵权或其他法律依据,是否因软件或软件的使用或其他方式产生。