Incosistent regex result for Thai characters across different PHP version

41 Views Asked by At

String is considered valid if contains alphanumeric and _ and - and Thai characters, otherwise invalid. Characters like . or @ are invalid.

Based on the PHP documentation, the following regex should be working:

^[\w\-\p{Thai}]+$

It even seems to work as expected here: https://regex101.com/r/rfwjng/1

However doesn't work in my PHP code, nor working here: https://www.phpliveregex.com/p/wDf

private function containsInvalidCharacters($value) {
    return !preg_match('/^[\w\-\p{Thai}]+$/', $value);
}

Update 1:

To clarify if I do /u at the end, it starts matching unwanted characters on my local machine. Although that seems to work on the referenced link (as suggested in the comment.)

Update 2:

Issue resolved when using '/^[\wก-๙-]+$/u'. For some reason \p{Thai} was not giving consistent results across PHP versions. See here: https://3v4l.org/4hB9e

0

There are 0 best solutions below