php字符串与中文字符拆分方法

 更新时间:2016年11月25日 15:52  点击:1874

果直接用php教程函数“str_split”来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的。但是我们可以建立新的函数先把字符转成ascii值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用php函数“join”在字符间插入百分号

<?php
function str_split_utf8($str){
 $split=1;
 $array=array();
 for($i=0;$i<strlen($str)){
  $value=ord($str[$i]);
  if($value>127){
   if($value>=192&&$value<=223) $split=2;
   elseif($value>=224 && $value<=239) $split=3;
   elseif($value>=240 && $value<=247) $split=4;
  }else{
   $split=1;
  }
  $key=null;
  for($j=0;$j<$split;$j++,$i++){
   $key.=$str[$i];
  }
  array_push($array,$key);
 }
 return $array;
}
$string="一聚教程网www.111cn.net";
$arr1=str_split_utf8($string);
echo join("%",$arr1);
?>

方法二

 

<?php
$str="一聚教程网:http://www.111cn.net";
function mbstringtoarray($str,$charset) {
    $strlen=mb_strlen($str);
    while($strlen){
        $array[]=mb_substr($str,0,1,$charset);
        $str=mb_substr($str,1,$strlen,$charset);
        $strlen=mb_strlen($str);
    }
    return $array;
}
$arr=mbstringtoarray($str,"gb2312");
?>


  注意:

  1、$charset变量为网页编码,如"gb2312"或"utf-8";

  2、使用方法一要求服务器必须开启mbstring.dll扩展,否则代码执行错误,所以对于使用虚拟主机的朋友,可以考虑使用第二种方法。

  方法二:

<?php
function str_to_arr($str){
 $l=strlen($str);
 for($i=0;$i<$l;$i++){
  $arr[]=ord($str[$i])>127?$str[$i].$str[++$i]:$str[$i];
 }
 return $arr;
}
$arr=str_to_arr($str);
?>

php教程 用户名正则表达式(中文,英文,数字,字母)
由字母a~z(不区分大小写)、数字0~9、减号或下划线组成
只能以数字或字母开头和结尾 用户名长度为4~18个字符

^[a-za-z0-9]{1}[a-za-z0-9|-|_]{2-16}[a-za-z0-9]{1}$

用户名为大写字母小写字母或下划线,并以字母开头,长度为6-20

^[a-za-z][wd_]{5,19}

用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾

/^[a-z0-9_u4e00-u9fa5]+[^_]$/g

utf-8下

preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);

gbk下:

preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a)

可有中文的用户名验证

[a-za-z0-9][u4e00-u9fa5]


由于我们写的表达式是匹配一个字符串的任何部分。它将不止认为'mike_84′是合法字符串,同样也会匹配类似'%! mike_84&'这种包含了我们不希望出现的东西的字符串。我们需要用到行定位点, ^ (caret) 和 $ (dollar) 字符将把我们的表达式限制在一个字符串的起点和终点位置,这样可以确保整个用户名符合我们的设定,而不是一部分。

所以修订版的正则表达式象这样:
/^[a-za-z0-9_]{3,16}$/

php教程读取文件的几个常用函数

file_get_contents:

file_get_contents() 函数把整个文件读入一个字符串中。

和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。

file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

语法
file_get_contents(path,include_path,context,start,max_length

<?php
$url="http://www.111cn.net";
$contents = file_get_contents($url);
//如果出现中文乱码请加入以下代码
//$getcontent=iconv("gb2312","utf-8",file_get_contents($url));
//echo $getcontent;
echo $contents;
?>


2、curl:

如果您看到的话,那么您需要设置您的php并开启这个库。如果您是在windows平台下,那么非常简单,您需要改一改您的php.ini文件的设置,找到php_curl.dll,并取消前面的分号注释就行了,如下所示:
//取消下在的注释
extension=php_curl.dll

 

<?php
$url="http://www.111cn.net";
$ch=curl_init();
$timeout=5;
curl_setopt($ch,curlopt_url,$url);
curl_setopt($ch,curlopt_returntransfer,1);
curl_setopt($ch,curlopt_connecttimeout,$timeout);
//在需要用户检测的网页里增加下面两行
//curl_setopt($ch,curlopt_httpauth,curlauth_any);
//curl_setopt($ch,curlopt_userpwd,us_name.":".us_pwd);
$contents=curl_exec($ch);
curl_close($ch);
echo $contents;
?>


3、fopen->fread->fclose:

于fopen函数详细说明

定义和用法
fopen() 函数打开文件或者 url。

如果打开失败,本函数返回 false。

语法
fopen(filename,mode,include_path,context)参数 描述
filename 必需。规定要打开的文件或 url。
mode 必需。规定要求到该文件/流的访问类型。可能的值见下表。
include_path 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 true。
context 可选。规


"r" 只读方式打开,将文件指针指向文件头。
"r+" 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。创建。
"w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。创建。
"a" 写入方式打开,将文件指针指向文件末尾。文件不存在创建。
"a+" 读写方式打开,将文件指针指向文件末尾。文件不存在创建。

更多详细内容请查看:http://www.111cn.net/phper/php-function/35709.htm

<?php
$handle=fopen("http://www.111cn.net","rb");
$contents="";
do{
 $data=fread($handle,8192);
 if(strlen($data)==0){
  break;
 }
 $contents.=$data;
}
while(true);
fclose($handle);
echo $contents;
?>

什么是 cookie?
cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 php教程,您能够创建并取回 cookie 的值。
如何创建 cookie?
setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法
setcookie(name, value, expire, path, domain);

function cookie($var, $value='', $time=0, $path='', $domain=''){
$_cookie[$var] = $value;
if(is_array($value)){
foreach($value as $k=>$v){
setcookie($var.'['.$k.']', $v, $time, $path, $domain, $s);
}
}else{
setcookie($var, $value, $time, $path, $domain, $s);
}


如果浏览器不支持 cookie 该怎么办?
如果您的应用程序涉及不支持 cookie 的浏览器,您就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。

下面的表单在用户单击提交按钮时向 "welcome.php" 提交了用户输入:

<html>
<body>

<form action="welcome.php" method="post">
name: <input type="text" name="name" />
age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>取回 "welcome.php" 中的值,就像这样:

<html>
<body>

welcome <?php echo $_post["name"]; ?>.<br />
you are <?php echo $_post["age"]; ?> years old.

</body>
</html>

在php教程遍历数据我们常用的有二种方法 ,利用了for 与foreach来操作,前者是知道数据长度,然后 后者可以不知道数据长度,下面我们来分别举例说明。

<?

$array = array(1,2,3,4,5,'www.111cn.net','www.111cn.net');
for( $i=0;$i<count($array);$i++)
{
 echo $array[$i].'<br />';
}

输出结果如下
1
2
3
4
5
www.111cn.net
www.111cn.net

<?

foreach( $array as $v => $vv )
{
 echo $vv.'<br />';
}

输出结果如下

1
2
3
4
5
www.111cn.net
www.111cn.net
?>

两种输出结果完全相同,对于遍历多维数据我们就不说了,如果是多维数据利用foreach会更方便一些。

本站原创教程,转载必须注明来源于http://www.111cn.net/phper/php.html 否则必究

[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • c#中判断字符串是不是数字或字母的方法

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

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

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

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!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 ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25