本文目录一览:
- PHP用三元运算符判断字符串
- PHP有没有判断一个文件或者一段字符串是什么编码的函数?
- php 怎样判断字符串是哪种编码
- PHP mb_convert_encoding 获取字符串编码类型实现代码
- 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;
}
}
?>