2009年11月30日 星期一

[php]解決 big 輸出 許功蓋 跑出很多\\\\\\\\ 問題.

資料原本輸出為 '許功\\\\蓋 '
使用此function 後 變成 '許功蓋';
出處:竹貓星球


function Fix_Backslash($org_str) {
   //if ( mysql_client_encoding() != "big5" ) return mysql_client_encoding();

   $tmp_length = strlen($org_str);

   for ( $tmp_i=0; $tmp_i<$tmp_length; $tmp_i++ ) {
      $ascii_str_a = substr($org_str, $tmp_i , 1);
      $ascii_str_b = substr($org_str, $tmp_i+1, 1);

      $ascii_value_a = ord($ascii_str_a);
      $ascii_value_b = ord($ascii_str_b);

      if ( $ascii_value_a > 128 ) {
         if ( $ascii_value_b == 92 ) {
            $org_str = substr($org_str, 0, $tmp_i+2) . substr($org_str,$tmp_i+3);
            $tmp_length = strlen($org_str);
         }
         $tmp_i++;
      }
   }

   $tmp_length = strlen($org_str);
   if ( substr($org_str, ($tmp_length-1), 1) == "\\" ) $org_str .= chr(32);

   $org_str = str_replace("\\\0", "\ 0", $org_str);
   return $org_str;
}

【下列文章您可能也有興趣】

2 則留言:

jango hsu 提到...

if ( substr($org_str, ($tmp_length-1), 1) == "\\\" ) $org_str .= chr(32);

這一行會出現門題耶...

千江有水千江月 提到...

請把它改成這樣.
if ( substr($org_str, ($tmp_length-1), 1) == "\\" ) $org_str .= chr(32);