本文目錄一覽:
- 1、PHP用三元運算符判斷字符串
- 2、PHP有沒有判斷一個文件或者一段字符串是什麼編碼的函數?
- 3、php 怎樣判斷字符串是哪種編碼
- 4、PHP mb_convert_encoding 獲取字符串編碼類型實現代碼
- 5、php 判斷字符是不是base64
PHP用三元運算符判斷字符串
$str為讀出的字符串
strlen($str)30 ? echo substr($str,30).”…” : echo $str;
但是,這裡有個問題,如果字符串是漢字和字母,數字等混編的時候(類似”這是1個字符串”),漢字的截取就會出現亂碼,為避免這種情況,需要自己寫函數來實現
PHP有沒有判斷一個文件或者一段字符串是什麼編碼的函數?
測試:將 text1.txt 保存成 ASCII編碼, text2.txt 保存成 UTF-8 編碼
?php
function chkCode($string){
$code = array(‘ASCII’, ‘GBK’, ‘UTF-8’);
foreach($code as $c){
if( $string === iconv(‘UTF-8’, $c, iconv($c, ‘UTF-8’, $string))){
return $c;
}
}
return null;
}
$file = ‘text1.txt’;
echo chkCode(file_get_contents($file)); // 輸出ASCII
echo ‘br /’;
$file = ‘text2.txt’;
echo chkCode(file_get_contents($file)); // 輸出UTF-8
echo ‘br /’;
?
php 怎樣判斷字符串是哪種編碼
php中有個函數可以用來檢查當前字符串的編碼類型
mb_detect_encoding($str,array(‘ASSCII’,”GB2312′,’UTF-8));
PHP用MBString庫的函數
$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’));
switch($e){
case ‘UTF-8’ : //如果是utf8編碼
break;
case ‘GBK’: //如果是gbk編碼
break
}
PHP mb_convert_encoding 獲取字符串編碼類型實現代碼
後來又在手冊上找到了is_utf8函數,這樣,再結合iconv函數,我的問題就解決了。下面帖出這個函數:
複製代碼
代碼如下:
function
is_utf8($string)
{
return
preg_match(‘%^(?:
[\x09\x0A\x0D\x20-\x7E]
#
ASCII
|
[\xC2-\xDF][\x80-\xBF]
#
non-overlong
2-byte
|
\xE0[\xA0-\xBF][\x80-\xBF]
#
excluding
overlongs
|
[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
#
straight
3-byte
|
\xED[\x80-\x9F][\x80-\xBF]
#
excluding
surrogates
|
\xF0[\x90-\xBF][\x80-\xBF]{2}
#
planes
1-3
|
[\xF1-\xF3][\x80-\xBF]{3}
#
planes
4-15
|
\xF4[\x80-\x8F][\x80-\xBF]{2}
#
plane
16
)*$%xs’,
$string);
}
//
function
is_utf8
如果想深入研究,建議看下PHP手冊上的“Multibyte
String
Functions”這一部分的內容。
php 判斷字符是不是base64
PHP判斷一個字符串是否經過base64編碼,可以通過對該字符串解碼,然後編碼,最後對比兩者是否相等。示例代碼如下:
?php
header(“Content-type:text/html;charset=utf-8;”);
$str=”Y2hpbmF3aW54cA==”;
$re=is_base64($str);
if($re){
echo “該字符串是base64編碼”;
}else{
echo “該字符串未經過base64編碼”;
}
//判斷字符串是否經過編碼方法
function is_base64($str){
if($str==base64_encode(base64_decode($str))){
return true;
}else{
return false;
}
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157772.html