ホームページ > バックエンド開発 > PHPチュートリアル > このキャラクターは何ですか?

このキャラクターは何ですか?

WBOY
リリース: 2016-06-20 12:37:44
オリジナル
1340 人が閲覧しました

ページにはスペースが表示され、base64_encode の結果は次のようになります: Hw==

このようなスペースを完全に除外する方法はありますか? iconv を使用して gbk に変換し、再度変換しましたが、それでもフィルタリングできません。

$str = iconv('UTF-8', 'GBK//IGNORE', strip_tags($str));$str = iconv('GBK', 'UTF-8//IGNORE', $str)
ログイン後にコピー


ディスカッションへの返信 (解決策)

/** 過濾字符串,保留UTF8字母數字中文及部份符號 *   @param  String  $ostr *   @return String */  function filter_utf8_char($ostr){      preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);      $str = join('', $matches[0]);      if($str==''){   //含有特殊字符需要逐個處理          $returnstr = '';          $i = 0;          $str_length = strlen($ostr);          while ($i<=$str_length){              $temp_str = substr($ostr, $i, 1);              $ascnum = Ord($temp_str);              if ($ascnum>=224){                  $returnstr = $returnstr.substr($ostr, $i, 3);                  $i = $i + 3;              }elseif ($ascnum>=192){                  $returnstr = $returnstr.substr($ostr, $i, 2);                  $i = $i + 2;              }elseif ($ascnum>=65 && $ascnum<=90){                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符                  $i = $i + 1;              }else{                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }          }          $str = $returnstr;          preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);          $str = join('', $matches[0]);      }      return $str;  }  
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

echo bin2hex(base64_decode('Hw=='));
1f US (単位区切り文字) 単位区切り文字

Iこれまで何年も低レベル開発 (アセンブリ、C) を行ってきましたが、慣れていないためうまくプレイできません

低レベル開発 (アセンブリ、C) を行ったことがあります



不思議ではありませんが、彼はマスターであることが判明しました。素晴らしいものを編集する人は皆素晴らしい人です。

/** 過濾字符串,保留UTF8字母數字中文及部份符號 *   @param  String  $ostr *   @return String */  function filter_utf8_char($ostr){      preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);      $str = join('', $matches[0]);      if($str==''){   //含有特殊字符需要逐個處理          $returnstr = '';          $i = 0;          $str_length = strlen($ostr);          while ($i<=$str_length){              $temp_str = substr($ostr, $i, 1);              $ascnum = Ord($temp_str);              if ($ascnum>=224){                  $returnstr = $returnstr.substr($ostr, $i, 3);                  $i = $i + 3;              }elseif ($ascnum>=192){                  $returnstr = $returnstr.substr($ostr, $i, 2);                  $i = $i + 2;              }elseif ($ascnum>=65 && $ascnum<=90){                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符                  $i = $i + 1;              }else{                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }          }          $str = $returnstr;          preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);          $str = join('', $matches[0]);      }      return $str;  }  
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



すみません、この正規表現は全角カンマ、ポーズ、その他の中国語の句読点と一致しませんか?スラッシュとバックスラッシュは除外されますか?


/** 過濾字符串,保留UTF8字母數字中文及部份符號 *   @param  String  $ostr *   @return String */  function filter_utf8_char($ostr){      preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);      $str = join('', $matches[0]);      if($str==''){   //含有特殊字符需要逐個處理          $returnstr = '';          $i = 0;          $str_length = strlen($ostr);          while ($i<=$str_length){              $temp_str = substr($ostr, $i, 1);              $ascnum = Ord($temp_str);              if ($ascnum>=224){                  $returnstr = $returnstr.substr($ostr, $i, 3);                  $i = $i + 3;              }elseif ($ascnum>=192){                  $returnstr = $returnstr.substr($ostr, $i, 2);                  $i = $i + 2;              }elseif ($ascnum>=65 && $ascnum<=90){                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符                  $i = $i + 1;              }else{                  $returnstr = $returnstr.substr($ostr, $i, 1);                  $i = $i + 1;              }          }          $str = $returnstr;          preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);          $str = join('', $matches[0]);      }      return $str;  }  
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



すみません、この正規表現は全角カンマ、ポーズ、その他の中国語の句読点と一致しませんか?スラッシュとバックスラッシュは除外されますか?

いいえ、表示可能な文字ですので。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート