__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php /** * @package Regular Labs Library * @version 23.12.10783 * * @author Peter van Westen <[email protected]> * @link https://regularlabs.com * @copyright Copyright © 2023 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Library; defined('_JEXEC') or die; class RegEx { /** * Perform a regular expression match */ public static function match( string $pattern, string $string, &$match = null, ?string $options = null, int $flags = 0 ): int { if ( ( ! is_string($pattern) && ! is_numeric($pattern)) || $pattern === '' || ( ! is_string($string) && ! is_numeric($string)) || $string === '' ) { return false; } $pattern = self::preparePattern($pattern, $options, $string); $result = preg_match($pattern, $string, $match, $flags); // Remove all numeric keys except 0 $no_numeric_values = array_filter( $match, fn($key) => ! is_int($key) || $key === 0, ARRAY_FILTER_USE_KEY); // If the leftover array counts more than 2 (so contains named groups), replace $match if (count($no_numeric_values) > 1) { $match = $no_numeric_values; } return $result; } /** * Perform a global regular expression match */ public static function matchAll( string $pattern, string $string, &$matches = null, ?string $options = null, int $flags = PREG_SET_ORDER ): int { if ( ( ! is_string($pattern) && ! is_numeric($pattern)) || $pattern === '' || ( ! is_string($string) && ! is_numeric($string)) || $string === '' ) { $matches = []; return false; } $pattern = self::preparePattern($pattern, $options, $string); $result = preg_match_all($pattern, $string, $matches, $flags); if ( ! $result) { return false; } if ($flags == PREG_OFFSET_CAPTURE) { // Remove all numeric keys except 0 $no_numeric_values = array_filter( $matches, fn($key) => ! is_int($key) || $key === 0, ARRAY_FILTER_USE_KEY); // If the leftover array counts less than 2 (so no named groups), don't continue if (count($no_numeric_values) < 2) { return $result; } $matches = $no_numeric_values; return $result; } if ($flags != PREG_SET_ORDER) { return $result; } foreach ($matches as &$match) { // Remove all numeric keys except 0 $no_numeric_values = array_filter( $match, fn($key) => ! is_int($key) || $key === 0, ARRAY_FILTER_USE_KEY); // If the leftover array counts less than 2 (so no named groups), don't continue if (count($no_numeric_values) < 2) { break; } $match = $no_numeric_values; } return $result; } /** * preg_quote the given string or array of strings */ public static function nameGroup(string $data, string $name = ''): string { return '(?<' . $name . '>' . $data . ')'; } /** * Make a string a valid regular expression pattern */ public static function preparePattern( string|array $pattern, ?string $options = null, string $string = '' ): string|array { $array = ArrayHelper::applyMethodToValues([$pattern, $options, $string]); if ( ! is_null($array)) { return $array; } if ( ! str_starts_with($pattern, '#')) { $options = ! is_null($options) ? $options : 'si'; $pattern = '#' . $pattern . '#' . $options; } if (StringHelper::detectUTF8($string)) { // use utf-8 return $pattern . 'u'; } return $pattern; } /** * preg_quote the given string or array of strings */ public static function quote( string|array $data, string $name = '', string $delimiter = '#' ): string { if (is_array($data)) { if (count($data) === 1) { return self::quote(array_pop($data), $name, $delimiter); } $array = self::quoteArray($data, $delimiter); $prefix = '?:'; if ( ! empty($name)) { $prefix = $name ? '?<' . $name . '>' : ''; } return '(' . $prefix . implode('|', $array) . ')'; } if ( ! empty($name)) { return '(?<' . $name . '>' . preg_quote($data, $delimiter) . ')'; } return preg_quote($data, $delimiter); } /** * preg_quote the given array of strings */ public static function quoteArray(array $array, string $delimiter = '#'): array { array_walk($array, function (&$part, $key, $delimiter) { $part = self::quote($part, '', $delimiter); }, $delimiter); return $array; } /** * Perform a regular expression search and replace */ public static function replace( string $pattern, string $replacement, string $string, ?string $options = null, int $limit = -1, ?int &$count = null ): string { if ( ! is_string($pattern) || $pattern == '' || ! is_string($string) || $string == '') { return $string; } $pattern = self::preparePattern($pattern, $options, $string); return preg_replace($pattern, $replacement, $string, $limit, $count); } /** * Perform a regular expression search and replace once */ public static function replaceOnce( string $pattern, string $replacement, string $string, ?string $options = null ): string { return self::replace($pattern, $replacement, $string, $options, 1); } /** * Perform a regular expression split */ public static function split( string $pattern, string $string, ?string $options = null, int $limit = -1, int $flags = PREG_SPLIT_DELIM_CAPTURE ): array { if ( ( ! is_string($pattern) && ! is_numeric($pattern)) || $pattern === '' || ( ! is_string($string) && ! is_numeric($string)) || $string === '' ) { return [$string]; } $pattern = self::preparePattern($pattern, $options, $string); return preg_split($pattern, $string, $limit, $flags); } /** * reverse preg_quote the given string */ public static function unquote(string $string, string $delimiter = '#'): string { return strtr($string, [ '\\' . $delimiter => $delimiter, '\\.' => '.', '\\\\' => '\\', '\\+' => '+', '\\*' => '*', '\\?' => '?', '\\[' => '[', '\\^' => '^', '\\]' => ']', '\\$' => '$', '\\(' => '(', '\\)' => ')', '\\{' => '{', '\\}' => '}', '\\=' => '=', '\\!' => '!', '\\<' => '<', '\\>' => '>', '\\|' => '|', '\\:' => ':', '\\-' => '-', ]); } }
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Form | Folder | 0775 |
|
|
| ActionLogPlugin.php | File | 8.29 KB | 0664 |
|
| Alias.php | File | 3.22 KB | 0664 |
|
| ArrayHelper.php | File | 14.13 KB | 0664 |
|
| Article.php | File | 10.14 KB | 0664 |
|
| Cache.php | File | 4.69 KB | 0664 |
|
| Color.php | File | 1.85 KB | 0664 |
|
| DB.php | File | 15.25 KB | 0664 |
|
| Date.php | File | 5.25 KB | 0664 |
|
| Document.php | File | 13.21 KB | 0664 |
|
| DownloadKey.php | File | 3.92 KB | 0664 |
|
| EditorButtonPlugin.php | File | 5.9 KB | 0664 |
|
| EditorButtonPopup.php | File | 5.53 KB | 0664 |
|
| Extension.php | File | 14.81 KB | 0664 |
|
| FieldsPlugin.php | File | 1001 B | 0664 |
|
| File.php | File | 14.92 KB | 0664 |
|
| Html.php | File | 22.41 KB | 0664 |
|
| HtmlTag.php | File | 4.84 KB | 0664 |
|
| Http.php | File | 4.54 KB | 0664 |
|
| Image.php | File | 29.04 KB | 0664 |
|
| Input.php | File | 4.64 KB | 0664 |
|
| Language.php | File | 985 B | 0664 |
|
| License.php | File | 1.78 KB | 0664 |
|
| MobileDetect.php | File | 748 B | 0664 |
|
| ObjectHelper.php | File | 2.92 KB | 0664 |
|
| Parameters.php | File | 7.27 KB | 0664 |
|
| Php.php | File | 6.81 KB | 0664 |
|
| PluginTag.php | File | 16.31 KB | 0664 |
|
| Protect.php | File | 27.82 KB | 0664 |
|
| RegEx.php | File | 8.02 KB | 0664 |
|
| ShowOn.php | File | 1.44 KB | 0664 |
|
| SimpleCategory.php | File | 1.7 KB | 0664 |
|
| StringHelper.php | File | 22.9 KB | 0664 |
|
| StringReplacer.php | File | 13.66 KB | 0664 |
|
| SystemPlugin.php | File | 15.4 KB | 0664 |
|
| Title.php | File | 2.8 KB | 0664 |
|
| Uri.php | File | 6.06 KB | 0664 |
|
| Variables.php | File | 11.55 KB | 0664 |
|
| Version.php | File | 8.32 KB | 0664 |
|
| Xml.php | File | 1.53 KB | 0664 |
|