我想检测多字节字符串中的空格或连字符 首先,我将一个字符串拆分为字符数组
$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
!!!发生了什么???我怎么能做我想做的事?
答案 0 :(得分:0)
我来使用正则表达式。这一个
"/(?<=-| |^)([\w]*)/u"
查找unicode中所有具有连字符或空格的单词,或者在前一个位置没有任何内容(在第一行中)。我没有迭代字符数组而是使用preg_replace_callback
(在PHP&gt; = 5.4.1中可以使用mb_ereg_replace_callback
)。