$aa="我爱你ABC123";
我要把它拆一个一个的单字,然后每个字去数据库查拼音。
由于php对汉字是三个字节的,只能直接像Aps简易用len计长,再循环。谁有现成的函数处理中英文字符串转成逐字的数组?$aa="我爱你ABC123";
转成
$array=array('我','爱','你','A','B','C','1','2','3'")

解决方案 »

  1.   


      $str="我爱你ABC123";  
      $strlen=strlen($str);  
      for($i=0;$i<$strlen;$i++){  
      if(ord(substr($str,$i,1))>0xa0){  
                    echo   substr($str,$i,2)."<br>";  
                    $i++   ;  
      }  
              else{  
              echo   substr($str,$i,1)."<br>";  
              }  
       
      }   
      

  2.   


    $str = '我爱你ABC123';
    $len = mb_strlen($str,'utf-8');
    $arr = array();
    for($i=0;$i<$len;$i++)
    {
    $arr[$i] = mb_substr($str,$i,1,'utf-8');
    }
    //$arr就是要求的数组
      

  3.   

    当然mb_strlen()跟mb_substr()这二个函数你要有mbstring扩展才能用。而且编码也不一定是UTF-8。跟你自己所用的有关。
      

  4.   

    $str = "我爱你ABC123";
    print_r(getStrArray($str));
    function getStrArray($str)
    {
    $a = array();
    for ($i=0; $i< strlen($str); $i++)
    {
    $x = substr($str,$i,1);
    if (ord($x)>127)
    {
      $a[$i]= substr($str,$i,2);
      $i=$i+1;
    }
    else
    {
    $a[$i]= $x;
    }
    }
    return $a;
    }
      

  5.   

    <?php
    $str="我爱我abc";   
      $len=strlen($str);   
      //echo   $len;   
      $strlen=$len;   
      for($i=0;$i<$len;$i++)   
      {   

      if(ord($str[$i])>128)   
      {   
    echo substr($str,$i,2); 
    $i++;
    echo "<br>";
      }   
      else
      {
    echo substr($str,$i,1);
    echo "<br>";
    }
      }   
      //echo   "<br/>".$strlen;   ?>