Php Can';t将希伯来语单词拆分为数组

Php Can';t将希伯来语单词拆分为数组,php,html,arrays,Php,Html,Arrays,我试图通过get方法获取希伯来语输入,并将其拆分为一个数组,尽管页面已编码,但仍然会得到如下结果:array([0]=>� [1] => � [2] => � [3] => � [4] => � [5] => � [6] => � [7] => � ) (单词是מילה) 这是我的代码,我做错了什么 <!DOCTYPE html> <html> <head> <title>Test</title>

我试图通过get方法获取希伯来语输入,并将其拆分为一个数组,尽管页面已编码,但仍然会得到如下结果:array([0]=>� [1] => � [2] => � [3] => � [4] => � [5] => � [6] => � [7] => � ) (单词是מילה)

这是我的代码,我做错了什么

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head>
    <body>
        <?php
        $word = $_GET['word'];
        $arr = str_split($word);
        print_r($arr);
        ?>
    </body>
</html>

试验
函数拆分多字节($string){
$output=array();
对于($i=0;$i
我认为造成这个问题的原因是,ASCII不支持希伯来文字母,因此需要使用前缀为mb的PHP函数。它们将使用所谓的多字节(由多个字节表示的字母)值

您可以使用上面的函数。它应该按预期提供一个数组。

函数splitMultiByte($string){
$output=array();
对于($i=0;$i
我认为造成这个问题的原因是,ASCII不支持希伯来文字母,因此需要使用前缀为mb的PHP函数。它们将使用所谓的多字节(由多个字节表示的字母)值

您可以使用上面的函数。它应该按预期提供一个数组。

函数splitMultiByte($string){
$output=array();
对于($i=0;$i
我认为造成这个问题的原因是,ASCII不支持希伯来文字母,因此需要使用前缀为mb的PHP函数。它们将使用所谓的多字节(由多个字节表示的字母)值

您可以使用上面的函数。它应该按预期提供一个数组。

函数splitMultiByte($string){
$output=array();
对于($i=0;$i
我认为造成这个问题的原因是,ASCII不支持希伯来文字母,因此需要使用前缀为mb的PHP函数。它们将使用所谓的多字节(由多个字节表示的字母)值

您可以使用上面的函数。它会按预期为您提供一个数组。

这可能适合您

<?php
 function mb_str_split( $string ) {
 # Split at all position not after the start: ^
 # and not before the end: $
 return preg_split('/(?<!^)(?!$)/u', $string );
 }

 $string   = 'מילה';
 $charlist = mb_str_split( $string );

 print_r( $charlist );
?>    


Another way,

function mbStrToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
    $array[] = mb_substr($string,0,1,"UTF-8");
    $string = mb_substr($string,1,$strlen,"UTF-8");
    $strlen = mb_strlen($string);
}
return $array;
}

 $result=mbStrToArray('מילה');
 print '<pre>';
 print_r($result);

另一方面,,
函数mbstrotarray($string){
$strlen=mb_strlen($string);
while($strlen){
$array[]=mb_substr($string,0,1,“UTF-8”);
$string=mb_substr($string,1,$strlen,“UTF-8”);
$strlen=mb_strlen($string);
}
返回$array;
}
$result=mbstrotarray(‘מילה’);
打印“”;
打印(结果);
这可能适合您

<?php
 function mb_str_split( $string ) {
 # Split at all position not after the start: ^
 # and not before the end: $
 return preg_split('/(?<!^)(?!$)/u', $string );
 }

 $string   = 'מילה';
 $charlist = mb_str_split( $string );

 print_r( $charlist );
?>    


Another way,

function mbStrToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
    $array[] = mb_substr($string,0,1,"UTF-8");
    $string = mb_substr($string,1,$strlen,"UTF-8");
    $strlen = mb_strlen($string);
}
return $array;
}

 $result=mbStrToArray('מילה');
 print '<pre>';
 print_r($result);

另一方面,,
函数mbstrotarray($string){
$strlen=mb_strlen($string);
while($strlen){
$array[]=mb_substr($string,0,1,“UTF-8”);
$string=mb_substr($string,1,$strlen,“UTF-8”);
$strlen=mb_strlen($string);
}
返回$array;
}
$result=mbstrotarray(‘מילה’);
打印“”;
打印(结果);
这可能适合您

<?php
 function mb_str_split( $string ) {
 # Split at all position not after the start: ^
 # and not before the end: $
 return preg_split('/(?<!^)(?!$)/u', $string );
 }

 $string   = 'מילה';
 $charlist = mb_str_split( $string );

 print_r( $charlist );
?>    


Another way,

function mbStrToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
    $array[] = mb_substr($string,0,1,"UTF-8");
    $string = mb_substr($string,1,$strlen,"UTF-8");
    $strlen = mb_strlen($string);
}
return $array;
}

 $result=mbStrToArray('מילה');
 print '<pre>';
 print_r($result);

另一方面,,
函数mbstrotarray($string){
$strlen=mb_strlen($string);
while($strlen){
$array[]=mb_substr($string,0,1,“UTF-8”);
$string=mb_substr($string,1,$strlen,“UTF-8”);
$strlen=mb_strlen($string);
}
返回$array;
}
$result=mbstrotarray(‘מילה’);
打印“”;
打印(结果);
这可能适合您

<?php
 function mb_str_split( $string ) {
 # Split at all position not after the start: ^
 # and not before the end: $
 return preg_split('/(?<!^)(?!$)/u', $string );
 }

 $string   = 'מילה';
 $charlist = mb_str_split( $string );

 print_r( $charlist );
?>    


Another way,

function mbStrToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
    $array[] = mb_substr($string,0,1,"UTF-8");
    $string = mb_substr($string,1,$strlen,"UTF-8");
    $strlen = mb_strlen($string);
}
return $array;
}

 $result=mbStrToArray('מילה');
 print '<pre>';
 print_r($result);

另一方面,,
函数mbstrotarray($string){
$strlen=mb_strlen($string);
while($strlen){
$array[]=mb_substr($string,0,1,“UTF-8”);
$string=mb_substr($string,1,$strlen,“UTF-8”);
$strlen=mb_strlen($string);
}
返回$array;
}
$result=mbstrotarray(‘מילה’);
打印“”;
打印(结果);

没有足够的声誉来添加评论,因此请回答:

用希伯来语和其他多字节字符使用strlen有问题

mb_strlen('מילה', "UTF-8") //equals 4 as it should
更好地使用:

function splitMultiByte($string) {
    $output = array();
    for ($i = 0; $i < mb_strlen($string, "UTF-8") ; $i++) {
        $output[] = mb_substr($string,$i,1,'UTF-8');
    }
    return $output;
}
因此,考虑到Johannes Kling的回答,我们得到:

函数拆分多字节($string){
$output=array();
对于($i=0;$i

mb_strlen
默认情况下使用“内部字符编码”,因此,如果不是UTF-8,则计数将是错误的。因此,显式设置UTF-8是最安全的选项。imho。

没有足够的信誉来添加注释,因此请回答:

用希伯来语和其他多字节字符使用strlen有问题

mb_strlen('מילה', "UTF-8") //equals 4 as it should
更好地使用:

function splitMultiByte($string) {
    $output = array();
    for ($i = 0; $i < mb_strlen($string, "UTF-8") ; $i++) {
        $output[] = mb_substr($string,$i,1,'UTF-8');
    }
    return $output;
}
因此,考虑到Johannes Kling的回答,我们得到:

函数拆分多字节($string){
$output=array();
对于($i=0;$i

mb_strlen
默认情况下使用“内部字符编码”,因此,如果不是UTF-8,则计数将是错误的。因此,显式设置UTF-8是最安全的选项。imho。

没有足够的信誉来添加注释,因此请回答:

用希伯来语和其他多字节字符使用strlen有问题

mb_strlen('מילה', "UTF-8") //equals 4 as it should
更好地使用:

function splitMultiByte($string) {
    $output = array();
    for ($i = 0; $i < mb_strlen($string, "UTF-8") ; $i++) {
        $output[] = mb_substr($string,$i,1,'UTF-8');
    }
    return $output;
}
因此,考虑到Johannes Kling的回答,我们得到:

函数拆分多字节($string){
$output=array();
对于($i=0;$i
mb_strlen
默认情况下使用“内部字符编码”,因此如果不是UTF-8,则计数将是错误的。因此,显式设置UTF-8是imh中最安全的选项