diff --git a/src/Languages/Html/Patterns/HtmlCloseTagPattern.php b/src/Languages/Html/Patterns/HtmlCloseTagPattern.php
index c8ee301d..ec2fc122 100644
--- a/src/Languages/Html/Patterns/HtmlCloseTagPattern.php
+++ b/src/Languages/Html/Patterns/HtmlCloseTagPattern.php
@@ -14,7 +14,10 @@
#[PatternTest(input: '', output: 'CamelCase')]
#[PatternTest(input: '', output: 'x-hello')]
#[PatternTest(input: '', output: 'a')]
+#[PatternTest(input: '', output: 'math-α')]
+#[PatternTest(input: '', output: 'emotion-😍-emoji')]
# The following are not HTML valid
+#[PatternTest(input: 'αtag>', output: null)]
#[PatternTest(input: '', output: null)]
#[PatternTest(input: '', output: null)]
#[PatternTest(input: '', output: null)]
@@ -27,7 +30,7 @@
public function getPattern(): string
{
- return '<\/(?[a-zA-Z][a-zA-Z0-9\-]*(?![:_\.\w]))';
+ return '<\/(?[a-zA-Z][a-zA-Z0-9\-\x80-\xFF]*(?![:_\.\w\x80-\xFF]))';
}
public function getTokenType(): TokenTypeEnum
diff --git a/src/Languages/Html/Patterns/HtmlOpenTagPattern.php b/src/Languages/Html/Patterns/HtmlOpenTagPattern.php
index ee7c488d..bb5f9c25 100644
--- a/src/Languages/Html/Patterns/HtmlOpenTagPattern.php
+++ b/src/Languages/Html/Patterns/HtmlOpenTagPattern.php
@@ -14,7 +14,10 @@
#[PatternTest(input: '', output: 'CamelCase')]
#[PatternTest(input: '', output: 'a-component')]
#[PatternTest(input: '', output: 'a')]
+#[PatternTest(input: '', output: 'math-α')]
+#[PatternTest(input: '', output: 'emotion-😍-emoji')]
# The following are not HTML valid
+#[PatternTest(input: '<αtag>', output: null)]
#[PatternTest(input: '<_private>', output: null)]
#[PatternTest(input: '', output: null)]
#[PatternTest(input: '', output: null)]
@@ -27,7 +30,7 @@
public function getPattern(): string
{
- return '<(?[a-zA-Z][a-zA-Z0-9\-]*(?![:_\.\w]))';
+ return '<(?[a-zA-Z][a-zA-Z0-9\-\x80-\xFF]*(?![:_\.\w\x80-\xFF]))';
}
public function getTokenType(): TokenTypeEnum
diff --git a/src/Languages/Xml/Patterns/XmlCloseTagPattern.php b/src/Languages/Xml/Patterns/XmlCloseTagPattern.php
index f784f131..d6033c21 100644
--- a/src/Languages/Xml/Patterns/XmlCloseTagPattern.php
+++ b/src/Languages/Xml/Patterns/XmlCloseTagPattern.php
@@ -18,6 +18,9 @@
#[PatternTest(input: '', output: 'point.x')]
#[PatternTest(input: '', output: 'point_y')]
#[PatternTest(input: '', output: '_private')]
+#[PatternTest(input: '', output: 'données')]
+#[PatternTest(input: 'élément>', output: 'élément')]
+#[PatternTest(input: '数据>', output: '数据')]
# The following are not valid XML tags
#[PatternTest(input: '1tag>', output: null)]
#[PatternTest(input: '-tag>', output: null)]
@@ -27,7 +30,7 @@
public function getPattern(): string
{
- return '<\/(?[a-zA-Z_][\w\-\:\.]*)';
+ return '<\/(?[a-zA-Z_\x80-\xFF][\w\-\:\.\x80-\xFF]*)';
}
public function getTokenType(): TokenTypeEnum
diff --git a/src/Languages/Xml/Patterns/XmlOpenTagPattern.php b/src/Languages/Xml/Patterns/XmlOpenTagPattern.php
index 0fb7fb8b..3c6b4c28 100644
--- a/src/Languages/Xml/Patterns/XmlOpenTagPattern.php
+++ b/src/Languages/Xml/Patterns/XmlOpenTagPattern.php
@@ -19,6 +19,9 @@
#[PatternTest(input: '', output: 'point.x')]
#[PatternTest(input: '', output: 'point_y')]
#[PatternTest(input: '<_private>', output: '_private')]
+#[PatternTest(input: '', output: 'données')]
+#[PatternTest(input: '<élément>', output: 'élément')]
+#[PatternTest(input: '<数据>', output: '数据')]
# The following are not valid XML tags
#[PatternTest(input: '<1tag>', output: null)]
#[PatternTest(input: '<-tag>', output: null)]
@@ -28,7 +31,7 @@
public function getPattern(): string
{
- return '<(?[a-zA-Z_][\w\-\:\.]*)';
+ return '<(?[a-zA-Z_\x80-\xFF][\w\-\:\.\x80-\xFF]*)';
}
public function getTokenType(): TokenTypeEnum
diff --git a/tests/Languages/Html/HtmlLanguageTest.php b/tests/Languages/Html/HtmlLanguageTest.php
index 3653fa12..719e50bf 100644
--- a/tests/Languages/Html/HtmlLanguageTest.php
+++ b/tests/Languages/Html/HtmlLanguageTest.php
@@ -48,6 +48,8 @@ public static function provide_highlight_cases(): iterable
<?php foo(); ?>
</tag>
TXT],
+ ['', '<math-α></math-α>'],
+ ['', '<emotion-😍-emoji></emotion-😍-emoji>'],
];
}
}
diff --git a/tests/Languages/Xml/XmlLanguageTest.php b/tests/Languages/Xml/XmlLanguageTest.php
index aa0ed1f4..f423ce23 100644
--- a/tests/Languages/Xml/XmlLanguageTest.php
+++ b/tests/Languages/Xml/XmlLanguageTest.php
@@ -40,6 +40,8 @@ public static function provide_highlight_cases(): iterable
TXT],
["", '<ns:tag><tag></tag></ns:tag>'],
['', '<root xmlns:ns="...">'],
+ ['1', '<données>1</données>'],
+ ['<élément>élément>', '<élément></élément>'],
];
}
}