From eca67375281a8f7f0bf2cd786d4622d2941a3644 Mon Sep 17 00:00:00 2001 From: Roel Date: Sat, 21 Apr 2018 03:19:39 +0200 Subject: [PATCH 1/3] Extract regex patterns to its own class --- src/PhpArrayToXml.php | 51 ++++------------------------------------- src/lib/XmlPatterns.php | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 47 deletions(-) create mode 100644 src/lib/XmlPatterns.php diff --git a/src/PhpArrayToXml.php b/src/PhpArrayToXml.php index af4a1e7..03c33d1 100644 --- a/src/PhpArrayToXml.php +++ b/src/PhpArrayToXml.php @@ -4,6 +4,7 @@ use DOMDocument; use DOMElement; +use RefactorStudio\PhpArrayToXml\Lib\XmlPatterns; class PhpArrayToXml { @@ -340,7 +341,7 @@ public function getCastNullValue() */ public static function hasValidXmlTagStartingChar($value = null) { - if (preg_match(self::getValidXmlTagStartPattern(), $value) === 1) { + if (preg_match(XmlPatterns::getValidXmlTagStartPattern(), $value) === 1) { return true; } return false; @@ -354,7 +355,7 @@ public static function hasValidXmlTagStartingChar($value = null) */ public static function isValidXmlTagChar($value = null) { - if (preg_match(self::getValidXmlTagNameChar(), $value) === 1) { + if (preg_match(XmlPatterns::getValidXmlTagNameChar(), $value) === 1) { return true; } return false; @@ -372,7 +373,7 @@ public static function isValidXmlTag($value = null) return false; } - if (preg_match(self::getValidXmlTagNamePattern(), $value) === 1) { + if (preg_match(XmlPatterns::getValidXmlTagNamePattern(), $value) === 1) { return true; } return false; @@ -398,50 +399,6 @@ public function toXmlString($array = []) return $this->_doc->saveXML(); } - /** - * Get a regex pattern for valid tag names - * - * @return string - */ - protected static function getValidXmlTagNamePattern() - { - return '~ - # XML 1.0 Name symbol PHP PCRE regex - (?(DEFINE) - (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) - (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) - (? (?&NameStartChar) (?&NameChar)*) - ) - ^(?&Name)$ - ~ux'; - } - - /** - * Get a regex pattern for valid tag chars - * - * @return string - */ - protected static function getValidXmlTagNameChar() - { - return '~ - (?(DEFINE) - (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) - (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) - ) - ^(?&NameChar)$ - ~ux'; - } - - /** - * Get a regex pattern for valid tag starting characters - * - * @return string - */ - protected static function getValidXmlTagStartPattern() - { - return '~^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}])~ux'; - } - /** * Converts arrays to DOMDocument elements * diff --git a/src/lib/XmlPatterns.php b/src/lib/XmlPatterns.php new file mode 100644 index 0000000..86a4d1b --- /dev/null +++ b/src/lib/XmlPatterns.php @@ -0,0 +1,50 @@ + + (?(DEFINE) + (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) + (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) + (? (?&NameStartChar) (?&NameChar)*) + ) + ^(?&Name)$ + ~ux'; + } + + /** + * Get a regex pattern for valid tag chars + * + * @return string + */ + public static function getValidXmlTagNameChar() + { + return '~ + (?(DEFINE) + (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) + (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) + ) + ^(?&NameChar)$ + ~ux'; + } + + /** + * Get a regex pattern for valid tag starting characters + * + * @return string + */ + public static function getValidXmlTagStartPattern() + { + return '~^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}])~ux'; + } +} \ No newline at end of file From b535b322b5d2e78bab1c66524b0a609ad66c0b90 Mon Sep 17 00:00:00 2001 From: Roel Date: Sat, 21 Apr 2018 03:25:55 +0200 Subject: [PATCH 2/3] temp --- src/lib/XmlPatterns.php | 50 ----------------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 src/lib/XmlPatterns.php diff --git a/src/lib/XmlPatterns.php b/src/lib/XmlPatterns.php deleted file mode 100644 index 86a4d1b..0000000 --- a/src/lib/XmlPatterns.php +++ /dev/null @@ -1,50 +0,0 @@ - - (?(DEFINE) - (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) - (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) - (? (?&NameStartChar) (?&NameChar)*) - ) - ^(?&Name)$ - ~ux'; - } - - /** - * Get a regex pattern for valid tag chars - * - * @return string - */ - public static function getValidXmlTagNameChar() - { - return '~ - (?(DEFINE) - (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) - (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) - ) - ^(?&NameChar)$ - ~ux'; - } - - /** - * Get a regex pattern for valid tag starting characters - * - * @return string - */ - public static function getValidXmlTagStartPattern() - { - return '~^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}])~ux'; - } -} \ No newline at end of file From fb0042403dc4e752a4c33095dcaafdb8171ace8a Mon Sep 17 00:00:00 2001 From: Roel Date: Sat, 21 Apr 2018 03:27:07 +0200 Subject: [PATCH 3/3] Add file again ( src/Lib/ ) --- src/Lib/XmlPatterns.php | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/Lib/XmlPatterns.php diff --git a/src/Lib/XmlPatterns.php b/src/Lib/XmlPatterns.php new file mode 100644 index 0000000..86a4d1b --- /dev/null +++ b/src/Lib/XmlPatterns.php @@ -0,0 +1,50 @@ + + (?(DEFINE) + (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) + (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) + (? (?&NameStartChar) (?&NameChar)*) + ) + ^(?&Name)$ + ~ux'; + } + + /** + * Get a regex pattern for valid tag chars + * + * @return string + */ + public static function getValidXmlTagNameChar() + { + return '~ + (?(DEFINE) + (? [:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]) + (? (?&NameStartChar) | [.\\-0-9\\xB7\\x{0300}-\\x{036F}\\x{203F}-\\x{2040}]) + ) + ^(?&NameChar)$ + ~ux'; + } + + /** + * Get a regex pattern for valid tag starting characters + * + * @return string + */ + public static function getValidXmlTagStartPattern() + { + return '~^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\x{2FF}\\x{370}-\\x{37D}\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}])~ux'; + } +} \ No newline at end of file