本节内容:
中文字符串截取
例1,普通中文字符串的截取
<?php
function sysSubStr($string,$length,$append = false)
{
if(strlen($string) <= $length )
{
return $string;
}
else
{
$i = 0;
while ($i < $length)
{
$stringTMP = substr($string,$i,1);
if ( ord($stringTMP) >=224 )
{
$stringTMP = substr($string,$i,3);
$i = $i + 3;
}
elseif( ord($stringTMP) >=192 )
{
$stringTMP = substr($string,$i,2);
$i = $i + 2;
}
else
{
$i = $i + 1;
}
$stringLast[] = $stringTMP;
}
$stringLast = implode("",$stringLast);
if($append)
{
$stringLast .= "...";
}
return $stringLast;
}
}
$string = " —— 专注于互联网主流的各种技术";
$length = "27";
$append = true;
echo sysSubStr($string,$length,$append);
// 输出
// —— 专...
?>
例2,截取GB2312中文字符串:
//截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
例3,截取utf8编码的多字节字符串:
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
例4,UTF-8、GB2312都支持的汉字截取函数:
<?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
?>
您可能感兴趣的文章:
php中文支持函数 php中文截取字符串函数 PHP中文字符串翻转
php 截取中文字符串无乱码(ord()、substr()函数)
php中文字符截取函数(自用)
php字符截取中文防乱码用.chr(0)解决的方法
php中文截取字符串mb_substr的用法
php字符串截取substr函数简介
php截取中文的函数utf_substr
支持中文的php字符串截取函数实例
php截取中文字符串乱码如何解决呢
php字符串截取(substr的应用与扩展)
php截取中文字符串的二个函数(iconv_substr和mb_substr)
php 字符串截取函数(可以自动清除网页标签)
php截取中文字符(utf-8格式)的函数
php中文字符串截取函数支持多种编码
四个php中文字符串截取函数
php中文字符串截取 php截取中文字符串的代码
php中文字符串截取 php截取中文字符串的函数
php中文字符串截取(mb_substr)实例
截取中文字符的函数-csubstr
PHP中文字符串截取函数
本节内容:
php禁止提交空表单
如何在php编程中,判断表单中的空值呢?也就是对某些表单项禁止空值的提交。
1,可以修改代码,添加些判断:
if(empty($_POST['name'])){
echo "俗话说的好,雁过留声人过留名<br />";
}
elseif(empty($_POST['comment'])){
echo "矮油,多说几句吧~";
}
else{
$sql = "INSERT INTO myblog_comments(blog_id, dateposted, name, comment) VALUES(" . $validentry . ", NOW(), '" . $_POST['name'] . "', '" . $_POST['comment'] . "');";
mysql_query()($sql);
header("Location: http://". $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']."?id=" . $validentry);
}
2,PHP空值判断
empty 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置。
二者的区别:empty还会检测变量是否为空、为零。
当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。
例子:
/*比如检测 $id 变量,当 $id=0 时,用empty 和 isset 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty 认为没有配置,isset 能够取得 $id 的值:*/
$id=0;
empty($id)?print "It's empty .":print "It's $id .";
//结果:It's empty .
print "<br>";
!isset($id)?print "It's empty .":print "It's $id .";
//结果:It's 0 .
?>
总结:
PHP中,“NULL” 和 “空” 是2个概念。
isset 主要用来判断变量是否被初始化过
empty 可以将值为 “假”、“空”、“0”、“NULL”、“未初始化” 的变量都判断为TRUE
is_null 仅把值为 “NULL” 的变量判断为TRUE
var == null 把值为 “假”、“空”、“0”、“NULL” 的变量都判断为TRUE
var === null 仅把值为 “NULL” 的变量判断为TRUE
因此,在判断一个变量是否真正为“NULL”时,大多使用 is_null,从而避免“false”、“0”等值的干扰。
本节内容:
PHP二维数组元素个数
数据表中的字段 content 存储了一个以逗号分割的字符串,最大有20个数,最大数字为40。比如3,24,33,40类似字样的数字序列。
一个保存了多项投票结果的字段。
需求:
统计每个数字的个数,即每个投票项有多少人投了,并排序。
首先,从数据库的congtent字段读取数据,并把它们合并成一个字符串。
<?php
while($myrow = $connector -> fetch_array($result))
{
//$r[] = explode()(",", $myrow["content"]);
$str .= $myrow["content"].',';
}
$arr_str = substr($str, 0, -1);
?>
由于最后一个数后面有逗号,所以要对字符串进行截取。
然后,将字符串按逗号分割成数组。
用 array_count_values() 统计一维数组的元素个数
由于array_count_values()貌似不能直接对二维数组的元素进行个数统计,所以进行了上面的两个步骤,得到一个一维数组。
array_count_values() 函数用于统计数组中所有值出现的次数。返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。
$rs = array_count_values($r);
最后,进行排序:
asort($rs);
echo '<pre>';
print_r($rs);
echo '</pre>';