这里的一个问题的答案使我遇到了以下"问题"或挑战:
如果字符串是UTF-8编码并且包含特殊字符,是否有可能从特定位置获取一个字符?
对于包含字符串的非特殊字符,这是有效的:
$str = 'abcd';
echo $str{1}; // will print "b"
但是对于像这样的字符串:
$str = 'abc★';
echo $str{1}; // will return "b"
echo $str{3}; // leads to a question mark
当然PHP文件是用UTF-8编码的,<meta charset="utf-8">
在HTML的头部。
所以有任何解决方案,以获得这种方法捕捉字符在字符串的工作?
一种可能的方法
$str = 'abc★';
preg_match_all('/./su', $str, $m);
$chars = $m[0];
echo $chars[1]; // b
echo $chars[3]; // ★
/./su
表示"utf8模式下的任何字符,包括换行符("s")"。
或者像这样
echo mb_substr($str, 3, 1, 'utf8'); // ★