【发布时间】:2017-08-09 18:50:54
【问题描述】:
在我的一段代码中检测到rtrim() 没有删除字符串末尾的空格。
调查,我看到该字符串包含 EN SPACE (U+2002)
$str = 'ANDREWS CAROLE [US]';
// rawurlencode($s) //--> "ANDREWS%20CAROLE%E2%80%82%5BUS%5D"
$pat = "/\[(.*?)\]/";
$str = preg_replace($pat,'',$str); //--> "ANDREWS CAROLE " -> ANDREWS%20CAROLE%E2%80%82"
尝试但失败Filter all types of whitespace in PHP
$new = preg_replace('\p{Zs}$', '', $s)
我不知道$character_mask 这个空间与rtrim 一起使用的价值
【问题讨论】:
-
如果您使用正则表达式分隔符并添加
u修饰符?使用preg_replace('~\s+$~u', '', $s) -
尝试 1-regex 方法 - ideone.com/NfIvdZ。好吧,如果字符串的开头有一个 EN 空格,它将保留。所以,也许,使用你的两步方法可能会更安全。