有一个 POSIX 括号表达式列表,如[:alnum:]
, [:alpha:]
...
https://www.regular-expressions.info/posixbrackets.html
哪一个是半空间或半空间或零空间?
EDIT1:实际上,我regex_replace
在 smarty 代码中使用 PHP,如下所示
{$title|regex_replace:'/[^[:punct:][:alnum:][:space:]]/u':''}
此代码用空值替换所有字符,除了标点符号、字母数字和空格。
但不幸的是,它也用空字符串替换了半个空格。
例如:unicode persian string $title = '☺This is a test'
将更改为“这是一个测试”。
但正确的字符串应该是 'This is a test'
如您所见,它还将“اینیک”中的半个空格替换为空值并将其转换为“اینیک”
我想阻止它。
EDIT2:半空间或零空间是:
十进制字符代码:8204
十六进制字符代码:0x200c
HTML 字符参考:‌
Java 字符串:\u200c
解决方案:如果我将波斯语(波斯语)键盘添加到 Windows 并将键盘语言更改为波斯语(波斯语),那么
如果我使用 SHIFT+SPACE 在两个最新的括号 ]] 之间添加半个空格,效果很好!:
{$title|regex_replace:'/[^[:punct:][:alnum:][:space:]]/u':''}
(使用波斯语键盘的最新两个括号之间有一个半空格字符)
但不幸的是,它不能使用十六进制代码\x200c
,我不知道为什么!?
慕虎7371278
人到中年有点甜