Php STRU替换don和x27;有些人不工作
我写了下面的代码,但它的工作原理是错误的:Php STRU替换don和x27;有些人不工作,php,str-replace,arabic,numeric,Php,Str Replace,Arabic,Numeric,我写了下面的代码,但它的工作原理是错误的: $t = "۰۱۲۳۴۵۶۷۸۹٤٥٦"; $correct = array("0","1","2","3","4","5","6","7","8","9","4","5","6"); $wrong = array("٠","١","٢","٣","٤","٥","٦","٧","٨","٩","۴","۵","۶"); echo $t = str_replace($wrong,$correct, $t); 结果是不对的 ۰۱۲۳456۷۸۹۰۱۲۳
$t = "۰۱۲۳۴۵۶۷۸۹٤٥٦";
$correct = array("0","1","2","3","4","5","6","7","8","9","4","5","6");
$wrong = array("٠","١","٢","٣","٤","٥","٦","٧","٨","٩","۴","۵","۶");
echo $t = str_replace($wrong,$correct, $t);
结果是不对的
۰۱۲۳456۷۸۹۰۱۲۳456۷۸۹456
我在堆栈中搜索相同的问题,但它的答案对我没有帮助。尝试“mb_str_replace()”函数
使用此代码:-
我对这个问题一无所知,但是你可以尝试使用这个函数来实现这个想法:
//将数字转换为波斯人的数字
职能部门(每年$srting)
{
$num0=“۰;”;
$num1=“۱;”;
$num2=“۲;”;
$num3=“۳;”;
$num4=“۴;”;
$num5=“۵;”;
$num6=“۶;”;
$num7=“۷;”;
$num8=“۸;”;
$num9=“۹;”;
$stringtemp=“”;
$len=strlen($srting);
对于($sub=0;$sub),PHP中没有mb_str_repalce函数。此代码将字符串中的字符从东部阿拉伯数字转换为印度阿拉伯数字:
<?php
function arabic_convert($str = ''){
$str_list = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY);
if( !empty($str_list) ){
$transform_symbols = array(
'٠' => '0',
'١' => '1',
'٢' => '2',
'٣' => '3',
'٤' => '4',
'٥' => '5',
'٦' => '6',
'٧' => '7',
'٨' => '8',
'٩' => '9',
);
$str_transform = array();
foreach ($str_list as $str_item){
if( isset($transform_symbols[$str_item]) ){
$str_transform[] = $transform_symbols[$str_item];
}else{
$str_transform[] = $str_item;
}
}
$str = implode('', $str_transform);
}
return $str;
}
此代码很慢。每个if语句都将运行substr()
函数,当有一个长for循环和这么多substr
函数时,您的代码将非常慢!最好有一个开关()如果你想使用这种方法。同样,这是不推荐的。虽然我不会投反对票,因为它很有用,但也不是很好。是的,你是对的!代码太重太慢了,但是在面对一段HTML代码替换时,它是最灵活的。我想相反,我想把波斯语数字转换成拉丁语,所以我如果(substr($srting,$sub,2)=“$num8”)$stringtemp.=8;
因为unicodes得到2 bytePlease,请解释为什么此代码有助于解决OP的问题。PHP中没有mb_str_repalce函数。此代码将字符串中的字符从东方阿拉伯数字转换为印度阿拉伯数字
//converts the numbers into the persian's number
function persianNum($srting)
{
$num0="۰";
$num1="۱";
$num2="۲";
$num3="۳";
$num4="۴";
$num5="۵";
$num6="۶";
$num7="۷";
$num8="۸";
$num9="۹";
$stringtemp="";
$len=strlen($srting);
for($sub=0;$sub<$len;$sub++)
{
if(substr($srting,$sub,1)=="0")$stringtemp.=$num0;
elseif(substr($srting,$sub,1)=="1")$stringtemp.=$num1;
elseif(substr($srting,$sub,1)=="2")$stringtemp.=$num2;
elseif(substr($srting,$sub,1)=="3")$stringtemp.=$num3;
elseif(substr($srting,$sub,1)=="4")$stringtemp.=$num4;
elseif(substr($srting,$sub,1)=="5")$stringtemp.=$num5;
elseif(substr($srting,$sub,1)=="6")$stringtemp.=$num6;
elseif(substr($srting,$sub,1)=="7")$stringtemp.=$num7;
elseif(substr($srting,$sub,1)=="8")$stringtemp.=$num8;
elseif(substr($srting,$sub,1)=="9")$stringtemp.=$num9;
else $stringtemp.=substr($srting,$sub,1);
}
return $stringtemp;
}
//end convert function
<?php
function arabic_convert($str = ''){
$str_list = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY);
if( !empty($str_list) ){
$transform_symbols = array(
'٠' => '0',
'١' => '1',
'٢' => '2',
'٣' => '3',
'٤' => '4',
'٥' => '5',
'٦' => '6',
'٧' => '7',
'٨' => '8',
'٩' => '9',
);
$str_transform = array();
foreach ($str_list as $str_item){
if( isset($transform_symbols[$str_item]) ){
$str_transform[] = $transform_symbols[$str_item];
}else{
$str_transform[] = $str_item;
}
}
$str = implode('', $str_transform);
}
return $str;
}