[已解决]如果有人正在努力解决此问题,则将修饰符/u
添加到正则表达式可以解决此问题。感谢M.I.在评论:)
请考虑以下代码:
var_dump('Trimiteţi');
preg_match('/^([\p{L}]+)/', 'Trimiteţi', $matches);
print_r($matches);
我使用它来过滤使用\p{L}
可能包含非拉丁字符的单词,同时请注意我在$
中不使用结束字符串preg_match
正则表达式符号}
现在问题是,在本地执行代码时,我收到了这个输出:
string 'Trimiteţi' (length=10)
Array ( [0] => TrimiteÅ [1] => TrimiteÅ )
我尝试在PHP sandbox中执行代码,并输出类似的内容:
string(10) "Trimiteţi"
Array
(
[0] => Trimite�
[1] => Trimite�
)
请注意,至少这次它没有破坏原来的var_dump
字。
发生了什么事?为什么使用preg_match更改单词?最糟糕的是,如果我将$
添加到正则表达式的末尾,它将 NOT MATCH ,因为我认为这些转换的符号不能被解释为字符串结尾或某事。拜托,帮帮我
编辑:我正在运行的文件编码设置为“text / x-php; charset = utf-8”
Edit2:另外,我使用regex101.com,当使用REGULAR EXPRESSION“^ [\ p {L}] + $”和单词“Trimiteţi”时,似乎匹配。您甚至可以将REGULAR EXPRESSION切换为“^([\ p {L}] +)$”,添加捕获组和站点输出:
MATCH 1
1. [0-9] `Trimiteţi`