0

我想检测多字节字符串中的空格或连字符。
起初我将一个字符串拆分为字符数组

$chrArray = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);

然后我尝试将这些符号与连字符或空格进行比较

foreach ($chrArray as $char) {
    if ($char == '-' || $char == ' ') {
        // Do something
    }
}

哦,这个不行。好吧,为什么?也许是因为 ASCII 中的那些符号?

echo mb_detect_encoding('-'); // ASCII

好的,我会努力处理的。

    $encoding = mb_detect_encoding($str); // UTF-8
    $dash = mb_convert_encoding('-', $encoding);
    $space = mb_convert_encoding(' ', $encoding);

哦,但它也不起作用。等一等...

echo mb_detect_encoding($dash); // ASCII

!!!发生了什么???我怎么能做我想做的事?

4

1 回答 1

0

我开始使用正则表达式。这个

"/(?<=-| |^)([\w]*)/u"

查找 unicode 中在前一个位置有连字符、空格或什么都没有(一行中的第一个)的所有单词。我使用的是preg_replace_callback(在 PHP >= 5.4.1 中mb_ereg_replace_callback可以使用),而不是迭代 chars 数组。

于 2012-09-09T13:49:26.597 回答