在 PHP 5.2 中修剪 unicode 空格

如何修剪第一个空格是0xc2a0不间断空格的 。string(6) " page"

我试过了,.trim()preg_match('/^\s*(.*)\s*$/u', $key, $m);

另一个问题:如何可靠地复制这些字符?它们似乎被转换为“正常”空间,这使得调试变得困难。


答案 1
preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u','',$str);

答案 2

PCRE unicode 属性属性可用于实现此目的

这是我玩过的代码,似乎可以做你想做的:

<?php
function unicode_trim ($str) {
    return preg_replace('/^[\pZ\pC]+([\PZ\PC]*)[\pZ\pC]+$/u', '$1', $str);
}

$key = chr(0xc2) . chr(0xa0) . '#page#' . chr(0xc2) . chr(0xa0);

var_dump(unicode_trim($key));

结果

[~]> php e.php
string(6) "#page#"

解释:

\p{xx} 具有 xx 属性的字符 \P{xx} 不带 xx 属性的字符

如果 xx 只有一个字符,则可以删除 {},例如 \p{Z} 与 \pZ 相同

Z 代表所有分隔符,C 代表所有“其他”字符(例如控制字符)


推荐