php判断字符串编码,php编码规范有哪些

发布时间:2022-11-26

本文目录一览:

  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);
}

如果想深入研究,建议看下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;
    }
}
?>