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 phpregex.org.
- 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 phpregex.org. List of changes is available in ChangeLog.md.
Quick links:
- Introduction - https://phpregex.org/docs/introduction
- Prepared patterns - https://phpregex.org/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 phpregex.org
-
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[]. ObjectGroupcontains 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:
- Add documentation to each T-Regx public method #17 [in progress]
- Revamp of phpregex.org 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.