Php Can';t将希伯来语单词拆分为数组
我试图通过get方法获取希伯来语输入,并将其拆分为一个数组,尽管页面已编码,但仍然会得到如下结果:array([0]=>� [1] => � [2] => � [3] => � [4] => � [5] => � [6] => � [7] => � ) (单词是מילה) 这是我的代码,我做错了什么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>
<!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中最安全的选项