Download the PHP package rawr/t-regx without Composer
On this page you can find all versions of the php package rawr/t-regx. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package t-regx
T-Regx | Regular Expressions library
PHP regular expressions brought up to modern standards.
See documentation at t-regx.com.
- Installation
- Composer
- Examples
- Documentation
- T-Regx fiddle - Try online
- API
- For standard projects -
pattern()
- For legacy projects -
preg::match_all()
- For standard projects -
- Overview
- Prepared patterns
- Working with the developer
- Clean API
- Fatal errors
- Clean Code
- Exceptions vs. errors
- Comparison
- Exceptions over warnings/errors
- Working with the developer
- Written with clean API in mind
- Philosophy of Uncle Bob and "Clean Code"
- Plans for the future
- Sponsors
- License
Installation
Installation for PHP 7.1 and later (PHP 8 as well):
T-Regx only requires mb-string
extension. No additional dependencies or extensions are required.
Examples
Illustration of methods match()
, test()
and count()
.
Documentation
Full API documentation is available at t-regx.com. List of changes is available in ChangeLog.md.
Quick links:
- Introduction - https://t-regx.com/docs/introduction
- Prepared patterns - https://t-regx.com/docs/prepared-patterns
Try it online, in your browser!
Open T-Regx fiddle and start playing around right in your browser. Try now!
API
Choose the interface:
-
I choose the modern regex API:
Scroll to see -
pattern()->test()
,pattern()->match()
,pattern()->replace()
-
I choose to keep PHP methods (but protected from errors/warnings):
Scroll to see -
preg::match_all()
,preg::replace_callback()
,preg::split()
For standard projects, we suggest pattern()
. For legacy projects, we suggest preg::match_all()
.
-
Standard T-Regx
- Legacy API
Why T-Regx stands out?
:bulb: See documentation at t-regx.com
-
Prepared patterns
Using user data isn't always safe with PCRE (even with
preg_quote()
), as well as just not being that convenient to use. T-Regx provides dedicated solution for building patterns with unsafe user input. ChoosePattern::inject()
for simply including user data as literals. UsePattern::mask()
to convert user-supplied masks into full-fledged patterns, safely. UsePattern::template()
for constructing more complex patterns. -
Working with the developer
- Simple methods
- T-Regx exposes functionality by simple methods, which return
int
,string
,string[]
orbool
, which aren't nullable. If you wish to do something with your match or pattern, there's probably a method for that, which does exactly and only that.
- T-Regx exposes functionality by simple methods, which return
- Strings:
- Fixing error with multibyte offset (utf-8 safe).
- Separate methods for positions:
offset()
- which returns position of a match in characters in UTF-8byteOffset()
- which returns position of a match in bytes, regardless of encoding
-
Groups:
-
When using
preg::match_all()
, we receive an array, of arrays, of arrays. In contrast, T-Regx returns an array of groups:Group[]
. ObjectGroup
contains all the information about the group. - Group errors:
- When invalid group named is used
get('!@#')
, T-Regx throws\InvalidArgumentException
. - When attempt to read a missing group, T-Regx throws
NonexistentGroupException
. - When reading a group that happens not to be matched, T-Regx throws
GroupNotMatchedException
.
- When invalid group named is used
-
- Simple methods
-
Written with clean API
- Descriptive, simple interface
- Unicode support out-of-the-box
- No Reflection used,
No (...varargs)
,No (boolean arguments, true)
,(No flags, 1)
,[No [nested, [arrays]]]
- Inconsistencies between PHP versions are eliminated in T-Regx
-
Protects you from fatal errors
Certain arguments cause fatal errors with
preg_()
methods, which terminate the application and can't be caught. T-Regx will predict if given argument would cause a fatal error, and will throw a catchable exception instead. -
T-Regx follows the philosophy of Uncle Bob and "Clean Code"
Function should do one thing, it should do it well. A function should do exactly what you expect it to do.
-
Compatible with other tools and libraries
Granted,
Pattern::of()
accepts undelimited pattern ((Foo){3,4}}
) is not suitable with other PHP libraries, which work with delimited patterns (/(Foo){3,4}/
), for example Laravel and Routing. For that case, usePcrePattern::of()
which accepts plain-old standard PHP syntax. -
Exceptions over warnings/errors
-
Unlike PHP methods, T-Regx doesn't use warnings/notices/errors for unexpected inputs:
-
Detects malformed patterns in and throws
MalformedPatternException
. This is impossible to catch withpreg_last_error()
. - Not every error in PHP can be read from
preg_last_error()
, however T-Regx throws dedicated exceptions for those events.
-
Comparison
or
Current work in progress
Current development priorities, regarding release of 1.0:
- Separate SafeRegex and CleanRegex into to two packages, so users can choose what they need #103
- Add documentation to each T-Regx public method #17 [in progress]
- Revamp of t-regx.com documentation [in progress]
- Release 1.0
Sponsors
- Andreas Leathley - developing SquirrelPHP
- BarxizePL - Thanks!
T-Regx is developed thanks to
License
T-Regx is MIT licensed.
All versions of t-regx with dependencies
ext-mbstring Version *