Php 带方括号的字符串中的访问字符不';不能正确输出
我有一个字符串,我想访问Php 带方括号的字符串中的访问字符不';不能正确输出,php,arrays,string,Php,Arrays,String,我有一个字符串,我想访问ä字符。但是它输出问号而不是正确的字符 这是我的密码 $array = array('ä', 'b', 'c'); $string = 'äbc'; echo $string; // äbc echo '<br />'; echo $string[0]; // ? echo '<br />'; echo $array[0]; // ä 根据您的字符集,字母ä是多字节字母。使用数组访问访问字符串时,它返回第一个字节。在多字节ä的情况下,返回不可打印
ä
字符。但是它输出问号而不是正确的字符
这是我的密码
$array = array('ä', 'b', 'c');
$string = 'äbc';
echo $string; // äbc
echo '<br />';
echo $string[0]; // ?
echo '<br />';
echo $array[0]; // ä
根据您的字符集,字母ä是多字节字母。使用数组访问访问字符串时,它返回第一个字节。在多字节ä的情况下,返回不可打印的控制字符
使用数组访问访问数组会返回第一个元素,无论其长度如何,在本例中为multi byteä 根据您的字符集,字母ä是多字节字母。使用数组访问访问字符串时,它返回第一个字节。在多字节ä的情况下,返回不可打印的控制字符
使用数组访问访问数组会返回第一个元素,无论其长度如何,在本例中为multi byteä 您需要像这样使用
mb_substr()
$array = array('ä', 'b', 'c');
$string = 'äbc';
echo $string; // äbc
echo '<br />';
echo mb_substr($string, 0, 1, 'UTF8'); // replace UTF8 with whatever charset you are using
echo '<br />';
echo $array[0]; // ä
$array=array('a','b','c');
$string='äbc';
echo$string;//西元前
回声“
”;
echo mb_substr($string,0,1,'UTF8');//用您正在使用的任何字符集替换UTF8
回声“
”;
echo$array[0];//ä
原因是PHP假定字符占用一个字节。但在使用ä的情况下并非如此,因此需要使用mb_substr()而不是索引或substr()
我强烈建议您阅读此问题的答案您需要像这样使用
mb_substr()
$array = array('ä', 'b', 'c');
$string = 'äbc';
echo $string; // äbc
echo '<br />';
echo mb_substr($string, 0, 1, 'UTF8'); // replace UTF8 with whatever charset you are using
echo '<br />';
echo $array[0]; // ä
$array=array('a','b','c');
$string='äbc';
echo$string;//西元前
回声“
”;
echo mb_substr($string,0,1,'UTF8');//用您正在使用的任何字符集替换UTF8
回声“
”;
echo$array[0];//ä
原因是PHP假定字符占用一个字节。但在使用ä的情况下并非如此,因此需要使用mb_substr()而不是索引或substr()
我强烈建议您阅读此问题的答案我认为这与字符编码有关,如果您将
ä
替换为x
,它将按预期工作。@Celeritas$array[0]
返回正确的值。这实际上是此问题的重复,虽然很难说@Celeritas:问题被编辑了。。。而且,string[0]
本身对多字节字符也不起作用……当然了dunning kruger……我认为这与字符编码有关,如果你用x
替换ä
,它会按预期工作。@Celeritas$array[0]
返回正确的值。这实际上是这个问题的重复,虽然很难说@Celeritas:问题被编辑了。。。而且string[0]
本身对多字节字符不起作用……当然了dunning kruger。。。