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

果直接用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);
?>

时间: 2024-11-06 23:52:53

php字符串与中文字符拆分方法的相关文章

Lua判断字符串中包含中文字符的方法和计算字符串宽度函数分享_Lua

一.判断字符串中包含中文字符的方法 遍历数组,对每个字节使用string.byte(),发现有大于127的,就是汉字,可以参照下面的代码. 二.计算字符串宽度函数 复制代码 代码如下: -- 计算字符串宽度   local str = "Jimmy: 你好,世界!" local fontSize = 20 local lenInByte = #str local width = 0   for i=1,lenInByte do     local curByte = string.by

jquery 删除字符串最后一个字符的方法解析

 本篇文章主要是对jquery 删除字符串最后一个字符的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 字符串:var s = "1,2,3,4,5,"   目标:删除最后一个 ","   方法: s=s.substring(0,s.Length-1):   字符串:var s2 = "img/upload/123.jpg"   目标:获取文件名(不包含后缀名)   方法: s2=s2.substring(s2.lastIndexO

PHP使用strstr()函数获取指定字符串后所有字符的方法_php技巧

本文实例讲述了PHP使用strstr()函数获取指定字符串后所有字符的方法.分享给大家供大家参考,具体如下: PHP的strstr()函数可搜索字符串在另一字符串中的第一次出现位置,并返回字符串的剩余部分. strstr()函数定义如下: strstr(string,search,before_search) 参数说明: string 必需.规定被搜索的字符串. search  必需.规定所搜索的字符串. 如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符. before_searc

代码-中文字符拆分显示乱码问题

问题描述 中文字符拆分显示乱码问题 程序主要代码: int main (int argc, char argv[]) { aes256_context ctx; uint8_t key[32]; char *filename1="/home/phaeton/user/my_code/source.txt"; char *filename2="/home/phaeton/user/my_code/desc.txt"; int fctl1=0,fctl2=0;// 文件

JS使用正则表达式除去字符串中重复字符的方法_javascript技巧

本文实例讲述了JS使用正则表达式除去字符串中重复字符的方法.分享给大家供大家参考,具体如下: 这里演示一个简单的JavaScript正则表达式实例,将一串含有重复字符串中的多余字符滤除掉,请运行查看效果. 具体代码如下: <html> <head> <title>利用正则表达法除去字符串中的重复字符</title> </head> <body> <script language="javascript">

VBS利用SendKeys输入中文字符的方法_vbs

  首先我们看一个输入字母的例子: 复制代码 代码如下: set s = WScript.CreateObject("WScript.Shell") app=s.Run ("C:\windows\notepad.exe") code="biweilun" WScript.Sleep 1000 s.AppActivate app s.SendKeys code Wscript.quit 这段vbs会SendKeys方法的朋友就知道,作用是打开一个记

Java 完美判断中文字符的方法_java

Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比如:,.等等是不能识别的. 以下是比较完善的判断方法:CharUtil.java 复制代码 代码如下: import java.util.regex.Pattern; public class CharUtil {     public static void main(String[] args)

JS正则表达式获取字符串中特定字符的方法

 这篇文章主要介绍了JS正则表达式获取字符串中得特定字符,通过replace的回调函数获取,需要的朋友可以参考下 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test    实现的机制:通过replace的回调函数获取.    代码:  代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps";  var reg = /name='((w|-|s)+)/ig;  st

jquery 删除字符串最后一个字符的方法解析_jquery

字符串:var s = "1,2,3,4,5," 目标:删除最后一个 "," 方法:s=s.substring(0,s.Length-1): 字符串:var s2 = "img/upload/123.jpg" 目标:获取文件名(不包含后缀名) 方法:s2=s2.substring(s2.lastIndexOf('/')+1, s2.lastIndexOf('.'));