我正在尝试制作替代阿拉伯语文本的代码,以支持非阿拉伯语支持的程序 因为我需要在替换后反转文本但它显示一些垃圾而不是想要的结果
这是守则:
<?php
$string = "اهلا بك";
echo "$string <br>";
$Reversed = strrev($string);
echo "<br><b>After Reverse</b><br><br>";
echo "<br> $Reversed";
?>
结果:
اهلا بك
After Reverse
�٨� �ه٧
我需要它的方式却反转了吗?不是垃圾!!
答案 0 :(得分:12)
为了使strrev()
支持UTF-8
你需要使用这个Function
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return join('', array_reverse($ar[0]));
}
所以我们要在我们的代码中将strrev()变为utf8_strev():
$string = "اهلا بك";
echo "$string <br>";
$Reversed = utf8_strrev($string); // here we have changed it
echo "<br><b>After Reverse</b><br><br>";
echo "<br> $Reversed";
,结果是:
اهلا بك
After Reverse
كب الها
答案 1 :(得分:1)
一种更通用的解决方案,可处理所有编码,不仅限于UTF-8:
function mb_strrev ($string, $encoding = null)
{
if ( is_null($encoding) ) {
$encoding = mb_detect_encoding($string);
}
$length = mb_strlen($string, $encoding);
$reversed = '';
while ( $length-->0 ) {
$reversed .= mb_substr($string, $length, 1, $encoding);
}
return $reversed;
}
答案 2 :(得分:1)
我一直在用这个
从这里http://php.net/manual/en/function.strrev.php#122953
拍摄function mb_strrev($str){
$r = '';
for ($i = mb_strlen($str); $i >= 0; $i--) {
$r .= mb_substr($str, $i, 1);
}
return $r;
}