我正在尝试构建一个将字符串转换为带下划线的函数。 它适用于英文字符串,但不适用于希伯来字符串。
这是功能:
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̲
�̲�̲�̲�̲�̲�̲�̲�̲
�̲�̲�̲�̲
�̲�̲�̲�̲�̲�̲�̲�̲
有解决方案吗?
答案 0 :(得分:2)
这与希伯来语无关,而且str_split
与多重字节安全无关。
尝试使用此功能:
function mb_str_split( $string ) {
return preg_split('/(?<!^)(?!$)/u', $string);
}
这将返回一个字符数组,而不是字节数组。其余的代码应该可以正常工作。