正文
php取数据前几个字节 php 取字符串 前几位
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
PHP读取文件前几个字节 判断文件类型函数
PHP读取文件前几个字节 判断文件类型函数
/**
* 读取文件前几个字节 判断文件类型
*
* @return String
*/
function checkTitle($filename) {
$file = fopen($filename, 'rb');
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack('c2chars', $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
switch ($typeCode)
{
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
break;
case 8297:
$fileType = 'rar';
break;
case 255216:
$fileType = 'jpg';
break;
case 7173:
$fileType = 'gif';
break;
case 6677:
$fileType = 'bmp';
break;
case 13780:
$fileType = 'png';
break;
default:
$fileType = 'unknown'.$typeCode;
}
//Fix
if ($strInfo['chars1']=='-1' $strInfo['chars2']=='-40' ) {
return 'jpg';
}
if ($strInfo['chars1']=='-119' $strInfo['chars2']=='80' ) {
return 'png';
}
return $fileType;
}
求php获取首字母方法
function ($str){
$s1 = iconv('UTF-8','gb2312',$str);
$s2 = iconv('gb2312','UTF-8',$s1);
$s = $s2 == $str ? $s1 : $str;
$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
if($asc = -20319 $asc = -20284) return 'a';
if($asc = -20283 $asc = -19776) return 'b';
if($asc = -19775 $asc = -19219) return 'c';
if($asc = -19218 $asc = -18711) return 'd';
if($asc = -18710 $asc = -18527) return 'e';
if($asc = -18526 $asc = -18240) return 'f';
if($asc = -18239 $asc = -17923) return 'g';
if($asc = -17922 $asc = -17418) return 'h';
if($asc = -17417 $asc = -16475) return 'j';
if($asc = -16474 $asc = -16213) return 'k';
if($asc = -16212 $asc = -15641) return 'l';
if($asc = -15640 $asc = -15166) return 'm';
if($asc = -15165 $asc = -14923) return 'n';
if($asc = -14922 $asc = -14915) return 'o';
if($asc = -14914 $asc = -14631) return 'p';
if($asc = -14630 $asc = -14150) return 'q';
if($asc = -14149 $asc = -14091) return 'r';
if($asc = -14090 $asc = -13319) return 's';
if($asc = -13318 $asc = -12839) return 't';
if($asc = -12838 $asc = -12557) return 'w';
if($asc = -12556 $asc = -11848) return 'x';
if($asc = -11847 $asc = -11056) return 'y';
if($asc = -11055 $asc = -10247) return 'z';
return null;
};
这是一个传入汉字,通过汉字的ASCII码来判断汉字的首字母的方法。已经调试,可以直接使用。望测试。
php截取一段文字的前一百个字的问题
一般英文字符占一个字节,汉字占两个字节,有这么一种思路,在截取字符串的时候逐个判断要截取的字符是汉字还是英文字符,这样就不会出现错误了,下边给你帖一个我写的程序,你自己看下
html
head
title无标题文档/title
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/head
body
?php
function msubstr($str,$start,$len){
}
?
form action="" name="myform" method="post"
输入字符串:input type="text" name="str" value="5555我爱My祖国" /br /
输入起始位置:input type="text" name="str_start" /br /
输入截取长度:input type="text" name="str_len" /br /
input type="submit" name="sub" value="开始截取字符串" /
/form
?php
/*截取字符串的函数--------------数组式截取*/
function msubstr2($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
//将字符串中每个字符分开 并放到数组中
$str_arr = array();
$j = 1;
for($i=0;$istrlen($str);$i++){
if(ord(substr($str,$i,1))0xa0){ //说明是汉字 则需要一次截取3个字符
$str_arr[$j] = substr($str,$i,3);
$i = $i+2;
}else{
$str_arr[$j] = substr($str,$i,1);
}
$j++;
}
print_r($str_arr);
for($i=$start;$i=$len+$start-1;$i++){
if($icount($str_arr)){ //判断是否超出数组最大长度 如果是 则结束循环
break;
}
$str_temp .= $str_arr[$i];
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
return $ttt-$tt;
//return $str_temp;
}
function msubstr1($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
$j = 0; //记录截取的字符串的字符位置
$s = 0; //记录已经截取的字符长度
$str_temp = "";//记录截取的字符串
$k = strlen($str);
for($i=0;$i$k;){//循环全部字
if($s=$len) break;//如果已经截取的字符串长度超过要截取的长度 跳出循环 返回结果
if(ord(substr($str,$i,1))0xa0){ //判断是否为汉字
if($j+1=$start){//如果当前截取字符位置大于等于要截取的字符串的开始位置并且当前已经截取的字符长度还没有超出要截取的字符串的长度 则将此字符为要截取的字符
$str_temp .= substr($str,$i,3);
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i+=3;//确定为汉字 在utf8编码下占三个英文字符的长度 则需要记录三个字符
}else{
if($j+1=$start){
$str_temp .= substr($str,$i,1); //截取英文字符
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i++;//非汉字字符占一个字符的长度
}
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
//return $ttt-$tt;
return $str_temp;
}
if($_POST[sub]){
echo msubstr1($_POST[str],$_POST[str_start],$_POST[str_len]);
}
?
/body
/html
关于php取数据前几个字节和php 取字符串 前几位的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。