php 截取字符串函数(支持中文与不同编码)

 更新时间:2016年11月25日 15:53  点击:1937
本文章提供这三款php 截取字符串函数各有各的特点,所有字符串截取函数都支持中文汉字截取,解决了乱码问题,方法二,支持多种编码的截取。

//字符串截取函数一

 代码如下 复制代码

function mystr($str,$str_len) {//剪取一定长度的字符串(字符串,剪取长度)
     if (strlen($str)<=$str_len) {
         return $str;
     }else return mysubstr($str,0,$str_len)."...";
}
function mysubstr($str, $start, $len) {//剪取一定长度的字符串(字符串,剪取长度)
     $tmps教程tr = "";
     $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;
}

//字符截取函数二

 代码如下 复制代码

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 = "18";
$append = false;
echo syssubstr($string,$length,$append);


// utf-8:$byte=3 | gb 2312:$byte=2 | big5:$byte=2

 代码如下 复制代码

function bite_str($string, $start, $len, $byte=3)
{
     $str     = "";
     $count   = 1;
     $str_len = strlen($string);
     for ($i=0; $i<$str_len; $i++) {
         if (($count+1-$start)>$len) {
             $str   .= "...";
             break;
         } elseif ((ord(substr($string,$i,1)) <= 128) && ($count < $start)) {
             $count++;
         } elseif ((ord(substr($string,$i,1)) > 128) && ($count < $start)) {
             $count = $count+2;
             $i     = $i+$byte-1;
         } elseif ((ord(substr($string,$i,1)) <= 128) && ($count >= $start)) {
             $str   .= substr($string,$i,1);
             $count++;
         } elseif ((ord(substr($string,$i,1)) > 128) && ($count >= $start)) {
             $str   .= substr($string,$i,$byte);
             $count = $count+2;
             $i     = $i+$byte-1;
         }
     }
     return $str;
}

// test
$str = "1测试测试2测试测试3测试测试4测试测试";
echo $str;
echo "<br>".bite_str($str,0,20,2);//0为开始地址,20为结束地址2为类型上面说到的

//方法四,支持中英文字符串截取函数

 代码如下 复制代码

function ccstrlen($str) #计算中英文混合字符串的长度
{
$cclen=0;
$asclen=strlen($str);
$ind=0;
$hascc=ereg("[xa1-xfe]",$str); #判断是否有汉字
$hasasc=ereg("[x01-xa0]",$str); #判断是否有ascii字符
if($hascc && !$hasasc) #只有汉字的情况
return strlen($str)/2;
if(!$hascc && $hasasc) #只有ascii字符的情况
return strlen($str);
for($ind=0;$ind<$asclen;$ind++)
{
if(ord(substr($str,$ind,1))>0xa0)
{
$cclen++;
$ind++;
}
else
{
$cclen++;
}
}
return $cclen;
}

//截取字符串
mb_substr($str,star,count,encode);
//获取字符串长度
mb_strlen();
//完整保留在textarea文本中的回车换行
str_replace(chr(10),"<br />",$textarea);


//根据ascii返回相应的字母
echo "ascii为66的字母是:". chr(66)."<br>";

//chop 去除字符串中的连续空格和空白
$str="         he llo wo rd     ";echo "s:";
echo "s:".chop($str)."w";

//explode 按照某个字符分割字符串 返回数组
$str="green,red,yellow,white";
$arr=explode(" ",$str);echo "分割后的数组是:";
print_r($arr);

//implode 将数组按照某个字符拼成字符串
$arr=array("a","b","c","d");
$str=implode('/',$arr);
echo "<br>拼成的字符串是:".$str;

//打印print
print("打印的方法print");
echo "格式化打印printf:<br>";
printf("%f%",2,"d");

//不区分大小写比较字符串
echo "不区分大小写:".strcasecmp("hello word","hello word");
//区分大小写
echo "区分大小写:". strcmp("hello word","hello word");

//查找字符串
echo "查找的结果是:". strchr("hello word","hello");
//字符串长度
echo "str长度:".strlen("hello word");

//将字符串重复几次str_repeat
echo "将字符串重复几次:".str_repeat("ws",3);

//将字符串倒序排列
echo "zifuchuandaoxu:".strrev("zifuchuandaoxu");

//将字符串大写,小写转化
//strtolower();
//strtoupper();
//字符串替换,
echo "替换后的字符串是:". str_replace("b","*","aaaaabbbbbccccc");
//切割字符串
echo "切割后的字符串是:". substr("hello word",2,3);

 代码如下 复制代码

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>php教程 ajax分页程序代码</title>
<script language="网页特效" type="text/javascript">
function $()
{
  var elements = new array();
  for (var i = 0; i < arguments.length; i++)
  {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getelementbyid(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}

var xmlhttp
function pagination(page)
{
xmlhttp=getxmlhttpobject();
if (xmlhttp==null)
  {
  alert ("your browser does not support ajax!");
  return;
  }
var url="server.php";
url = url+"?starting="+page;
url=url+"&sid="+math.random();
xmlhttp.onreadystatechange=statechanged;
xmlhttp.open("get",url,true);
xmlhttp.send(null);
}

function statechanged()
{
/****
0 - (未初始化)还没有调用send()方法
 1 - (载入)已调用send()方法,正在发送请求
 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
 3 - (交互)正在解析响应内容
 4 - (完成)响应内容解析完成,可以在客户端调用了
***/
if (xmlhttp.readystate==4)
{
$("page_contents").innerhtml=xmlhttp.responsetext;
}
}

function getxmlhttpobject()
{
var xmlhttp=null;
try
  {
  // firefox, opera 8.0+, safari
  xmlhttp=new xmlhttprequest();
  }
catch (e)
  {
  // internet explorer
  try
    {
    xmlhttp=new activexobject("msxml2.xmlhttp");
    }
  catch (e)
    {
    xmlhttp=new activexobject("microsoft.xmlhttp");
    }
  }
return xmlhttp;
}
</script>
<link rel="stylesheet" type="text/css教程" href="style.css" />
</head>

<body>
<div id="page_contents">

 

 代码如下 复制代码
function pagenavi($total, $offset){
 global $conf_pagemax;
 global $conf_home;
 global $conf_pastlog;
 global $view;
 
 $next = $offset + $conf_pagemax;
 $prev = $offset - $conf_pagemax;
 echo " <!-- page navigation --> ";
 
 if($offset > $conf_pagemax-1){
  echo "<a href="index.php?offset=$prev";
  if($view == "past"){
   echo "&view=past";
  }
  echo ""><<上一页</a> ";
 }
 ($total % $pagemax)? $pagenum = ($total/$conf_pagemax) + 1: $pagenum = ($total/$conf_pagemax);
 if($total <= $conf_pagemax) $pagenum = 0;
 $c = 0;
 $page = 1;
 if($total > $conf_pagemax){
  echo "[<b> ";
  while($pagenum > 0){
   if($offset == $c){
    $str .= " $page ";
   } else {
    $str .= " <a href="index.php?offset=$c";
    if($view =="past"){
     $str .= "&view=past";
    }
    $str .= "">$page</a> ";
   }
   $page++;
   $pagenum--;
   $c = $c + $conf_pagemax;
  }
  echo "$str </b>] ";
 }
 if($next < $total){
  echo "<a href="index.php?offset=$next";
  if ($view == "past"){
   echo "&view=past";
  }
  echo "">下一页>></a> ";
 }
 echo "</td></tr></table>";
 echo " <!-- end of page navigation --> <br><br>";
 
 echo "
[ <a href="$conf_home">返回主页</a> ]
 ";
 
 if($view != "past"){
  if(file($conf_pastlog)){
   echo "[ <a href="index.php?view=past">以前的留言</a> ]";
  }
 }
 echo " [ <a href="search.php"> 搜索</a> ] ";
 echo " [ <a href="index.php">留言板首页</a> ] ";
 
 
}
在php语言中读取文件的方法很多,今天我们就来讲三种php读取文本文件内容实例吧,主要是用到fopen,file,file_get_contents函数来实现。

//fopen 读取文件实例

 代码如下 复制代码

$path ='a.txt';
$fp=fopen($file,"r");//以只读的方式打开文件
while(!(feof($fp)))
{
 $text=fgets($fp);//读取文件的一行
 echo $text;    
}

//file_get_contents读取文件

 代码如下 复制代码

if( file_exists( $path ) )
{
    $body = file_get_contents($path);
 echo $body ;//输入文件内容
}
else
{
    echo "文件不存在 $path";
}

//file

读取文本文件

 代码如下 复制代码
$cbody = file($path);


print_r($cbody); //因为file读取出来的文件是以数组形式保存的,所以用print_r输出。

 

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07