在PHP中将字符串拆分为Unicode字符数组的最佳方法是什么?
在 PHP 中,将字符串拆分为 Unicode 字符数组的最佳方法是什么?如果输入不一定是 UTF-8?
我想知道输入字符串中的 Unicode 字符集是否是另一组 Unicode 字符的子集。
为什么不直接运行功能系列,因为前几个答案没有?mb_
在 PHP 中,将字符串拆分为 Unicode 字符数组的最佳方法是什么?如果输入不一定是 UTF-8?
我想知道输入字符串中的 Unicode 字符集是否是另一组 Unicode 字符的子集。
为什么不直接运行功能系列,因为前几个答案没有?mb_
您可以将“u”修饰符与PCRE正则表达式一起使用;请参阅模式修饰符(引用):
u (PCRE8)
此修饰符打开与 Perl 不兼容的 PCRE 的其他功能。模式字符串被视为 UTF-8。此修饰符在 Unix 上的 PHP 4.1.0 或更高版本中可用,在 win32 上可从 PHP 4.2.3 获得。从 PHP 4.3.5 开始检查模式的 UTF-8 有效性。
例如,考虑以下代码:
header('Content-type: text/html; charset=UTF-8'); // So the browser doesn't make our lives harder
$str = "abc 文字化け, efg";
$results = array();
preg_match_all('/./', $str, $results);
var_dump($results[0]);
您将获得一个不可用的结果:
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string ' ' (length=1)
4 => string '�' (length=1)
5 => string '�' (length=1)
6 => string '�' (length=1)
7 => string '�' (length=1)
8 => string '�' (length=1)
9 => string '�' (length=1)
10 => string '�' (length=1)
11 => string '�' (length=1)
12 => string '�' (length=1)
13 => string '�' (length=1)
14 => string '�' (length=1)
15 => string '�' (length=1)
16 => string ',' (length=1)
17 => string ' ' (length=1)
18 => string 'e' (length=1)
19 => string 'f' (length=1)
20 => string 'g' (length=1)
但是,使用此代码:
header('Content-type: text/html; charset=UTF-8'); // So the browser doesn't make our lives harder
$str = "abc 文字化け, efg";
$results = array();
preg_match_all('/./u', $str, $results);
var_dump($results[0]);
(请注意正则表达式末尾的“u”)
你得到你想要的:
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string ' ' (length=1)
4 => string '文' (length=3)
5 => string '字' (length=3)
6 => string '化' (length=3)
7 => string 'け' (length=3)
8 => string ',' (length=1)
9 => string ' ' (length=1)
10 => string 'e' (length=1)
11 => string 'f' (length=1)
12 => string 'g' (length=1)
希望这有帮助:-)
比 :preg_match_all
preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY)
这将为您提供一维字符数组。不需要匹配对象。