下面的代码中存在一个问题,如果我提供的输入参数全部都是汉字(繁体和简体并存),没有其他任何ASCII码,比如空格,数字,英文字母,等号,等等,就可以正确的将给定字符串中的繁体转换成简体,但是如果我加入了ASCII码,结果就不正常了。
知道如何解决的请回答,在线等,第一个解决的马上给100分!!!<?php
$charPYStr ="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱";$ftPYStr = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛";
  
function ttt($source)
{
  global $ftPYStr,$charPYStr;
  $str="";  
  for($i=0;$i<strlen($source);$i=$i+2){            
    
        $pos = strpos($ftPYStr, substr($source,$i,2)); 
        if($pos!=false)    
          $str .=  substr($charPYStr,$pos,2);       
        else
          $str .=  substr($source,$i,2);
  }
  
  return $str;
}$cc1 = "啊阿埃";
$cc2 = "<br/>啊 阿埃 ";
echo $cc1."<br>";
echo ttt($cc1);echo $cc2."<br>";
echo ttt($cc2);?>

解决方案 »

  1.   


    function ttt($source)
    {
      global $ftPYStr,$charPYStr;
      $str="";  
      for($i=0;$i<strlen($source);){            
        
            $pos = strpos($ftPYStr, substr($source,$i,2)); 
            if($pos!=false)    
            {
             $str .=  substr($charPYStr,$pos,2);       
             $i += 2;
            }
            else
            {
             $str .=  substr($source,$i,1);
             $i +=1;
            }
      }
      
      return $str;
    }
      

  2.   

    if($pos!=false)     ==>  if($pos !== false)差点上当了
      

  3.   

    用循环效率很低,这是我常用的处理方法,分享一下<?php
    header("Content-Type: text/html; Charset=utf-8");$charPYStr ="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱";$ftPYStr = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛";$a = preg_split('//u', $charPYStr, -1, PREG_SPLIT_NO_EMPTY);
    $b = preg_split('//u', $ftPYStr, -1, PREG_SPLIT_NO_EMPTY);
    //preg_split这个应用需要php5 & unicode...否则需要变换思路$cc1 = "啊阿爱爱";
    $cc2 = "<br/>啊爱 阿爱 ";
    echo $cc1."<br>";
    echo str_replace($a, $b, $cc1);echo $cc2."<br>";
    echo str_replace($a, $b, $cc2);?>
      

  4.   

    <?php
    header("Content-Type: text/html; Charset=gb2312");$charPYStr ="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱";$ftPYStr = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛";$a = preg_split('//u', $charPYStr, -1, PREG_SPLIT_NO_EMPTY);
    $b = preg_split('//u', $ftPYStr, -1, PREG_SPLIT_NO_EMPTY);
    //preg_split这个应用需要php5 & unicode...否则需要变换思路$cc1 = "啊阿爱爱";
    $cc2 = "<br/>啊爱 阿爱 ";
    echo $cc1."<br>";
    echo str_replace($a, $b, $cc1);echo $cc2."<br>";
    echo str_replace($a, $b, $cc2);?>
    借前一下
      

  5.   

    效率比对下吧
    不认为用preg_split后,程序会有多快
      

  6.   

    为什么不用客户端的js转换呢?保证全有输入数据不改变输出后在客户端js转换不是更好?