Concat 希伯来字符与下划线字符
Concat hebrew chars with underline char
我正在尝试构建一个将字符串转换为带下划线的函数。
它适用于英文字符串,但不适用于希伯来语字符串。
这是函数:
function underline($str){
$tmp_word = '';
foreach(str_split($str) as $char){
$tmp_word.= $char.'̲';
}
return $tmp_word;
}
还有一些情况:
echo underline('abcd') . "<br>";
$hebrew_word = 'אבגד';
echo underline($hebrew_word) . "<br>";
echo underline( hebrev(iconv("UTF-8", "ISO-8859-8", $hebrew_word))). "<br>";
echo underline(iconv("ISO-8859-8", "UTF-8", hebrev(iconv("UTF-8", "ISO-8859-8", $hebrew_word)))). "<br>";
输出为:
a̲b̲c̲d̲
�̲�̲�̲�̲�̲�̲�̲�̲
�̲�̲�̲�̲
�̲�̲�̲�̲�̲�̲�̲�̲
有解决办法吗?
这与希伯来语无关,与 str_split
不是多字节安全有关。
尝试使用这个函数:
function mb_str_split( $string ) {
return preg_split('/(?<!^)(?!$)/u', $string);
}
这将 return 一个字符数组,而不是一个字节数组。您的其余代码应该可以正常工作。
我正在尝试构建一个将字符串转换为带下划线的函数。 它适用于英文字符串,但不适用于希伯来语字符串。
这是函数:
function underline($str){
$tmp_word = '';
foreach(str_split($str) as $char){
$tmp_word.= $char.'̲';
}
return $tmp_word;
}
还有一些情况:
echo underline('abcd') . "<br>";
$hebrew_word = 'אבגד';
echo underline($hebrew_word) . "<br>";
echo underline( hebrev(iconv("UTF-8", "ISO-8859-8", $hebrew_word))). "<br>";
echo underline(iconv("ISO-8859-8", "UTF-8", hebrev(iconv("UTF-8", "ISO-8859-8", $hebrew_word)))). "<br>";
输出为:
a̲b̲c̲d̲
�̲�̲�̲�̲�̲�̲�̲�̲
�̲�̲�̲�̲
�̲�̲�̲�̲�̲�̲�̲�̲
有解决办法吗?
这与希伯来语无关,与 str_split
不是多字节安全有关。
尝试使用这个函数:
function mb_str_split( $string ) {
return preg_split('/(?<!^)(?!$)/u', $string);
}
这将 return 一个字符数组,而不是一个字节数组。您的其余代码应该可以正常工作。