php截取字符串各种编码函数和计算utf-8编码字符长度函数
php字符串截取方法(一)
php字符串截取方法(一)PHP字符串截取方法在PHP编程中,字符串截取是一项常见的操作,用于获取字符串中的部分内容。
本文将介绍几种PHP字符串截取的方法。
substr函数substr函数是PHP内置函数,用于截取一个字符串的一部分。
它的语法如下:string substr ( string $string , int $start [, int $length ] )其中,string是待截取的字符串,start是起始位置,lengtℎ是截取的长度。
如果length省略,则会截取到字符串末尾。
例如:$str = "Hello world";$substring = substr($str, 0, 5);echo $substring; // 输出 "Hello"mb_substr函数mb_substr是mbstring扩展提供的函数,用于截取多字节字符。
它的语法和substr函数类似:string mb_substr ( string $str , int $start [, int $length [, string $e ncoding ]] )其中,str是待截取的字符串,start是起始位置,lengtℎ是截取的长度,encoding是字符串编码,如果省略,则使用内部编码。
例如:$str = "你好世界";$substring = mb_substr($str, 0, 2, "UTF-8");echo $substring; // 输出 "你好"explode函数用于将字符串按照指定的分隔符分割成数组。
它的语法如下:array explode ( string $delimiter , string $string [, int $limit ] )其中,delimiter是分隔符,string是待分割的字符串,$limit是最多分割的次数,如果省略,则会分割所有匹配的项。
php字符串处理函数 字符串查找、替换、截取
11var_dump($root_location);//输出3
12var_dump(substr($path, 0,$root_location));//输出var
13$filename_location=strrpos($path, '/');
8var_dump(explode('/',$dir));
(3)impolde($sep, $str)将数组通过分隔符转化为字符串<=>join
1/**
2* implode($sep, $array) 将数组通过分隔符连接成一个字符串
3* @param string $sep 分隔符
4* @param string $str 要分隔的字符
2、字符串查找
(1)strstr($str,$need,bool $return_before=false)查找字符串中从$need开始到结尾的字符串<=>和strchr是同义函数
1/**
2* strstr($str, $need, $return_before = false) === strchr
(4)strrpos($str, $need)在字符串$str中查找$need最后一次出现的位置,返回这个位置=>不区分大小写时用strripos()
1/**
2* strpos($str, $need [,int $offset])
3* @param string $str 要操作的字符串
4* @param string $need 要被搜索的字符
(1)strcmp($str1,$str2) //比较两个字符串是否相等,当结果为0时表示相等,为1时表示第一个字符串大于第二个字符串,为-1是第一个字符串小于第二个字符串(这是大于和小于只是位置上的比较,在ascii码表中后面的字符大于前面的字符)
php截取html字符串及自动补全html标签的方法
php截取html字符串及自动补全html标签的方法摘要:一、引言二、PHP截取HTML字符串的方法1.使用函数2.使用DOM解析三、自动补全HTML标签的方法1.使用JavaScript2.使用jQuery四、实例演示五、总结正文:一、引言在Web开发中,HTML、CSS和JavaScript是最基本的技能。
随着前端技术的不断发展,我们需要掌握更多高效、简洁的方法来处理HTML字符串。
本文将详细介绍如何在PHP中截取HTML字符串及自动补全HTML标签的方法。
二、PHP截取HTML字符串的方法1.使用函数在PHP中,可以使用函数`substr`来截取HTML字符串。
以下是一个示例:```php$html = "<div class="content">Hello, World!<br>This is a sample HTML string.</div>";$substring = substr($html, 0, 20);echo $substring; // 输出:Hello, World!```2.使用DOM解析还可以使用DOM解析器来截取HTML字符串。
以下是一个示例:```php$html = "<div class="content">Hello, World!<br>This is a sample HTML string.</div>";$dom = new DOMDocument();@$dom->loadHTML($html);$node = $dom->getElementsByTagName("div");$substring = $node[0]->nodeValue;echo $substring; // 输出:Hello, World!```三、自动补全HTML标签的方法1.使用JavaScript在HTML中,可以使用JavaScript实现自动补全功能。
php自动识别文件编码并转换为UTF-8的方法
php自动识别文件编码并转换为 UTF-8的方法
PHP转换文件编码是一个比较简单的事情,但是在开发中传递中文参数的时候,有时候不知道是什么编码,结果造成了乱码 的现象。这里有个非常方便的解决办法,可以自动识别编码并转换为UTF-8。具体代码如下:
$data = mb_convert_encoding($data ,'utf-8' , $fiபைடு நூலகம்eType); } } return $data; }
复制代码 代码如下: function characet($data){
if( !empty($data) ){ $fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ; if( $fileType != 'UTF-8'){
phpsubstring()用法
PHP的substr()函数是一个用于在字符串中截取子串的常用函数。
它可以在字符串中指定一个起始索引和一个终止索引来获取字符串中的指定子串。
该函数允许在字符串的头部、尾部、中间任意位置截取子串,且支持不同长度的子串。
此外,substr()函数还支持从尾部到头部的截取,从而实现了反向的截取操作。
在这个函数的使用中,我们可以通过传递不同的参数来获得我们需要的子串,其中第一个参数用于指定子串的起始位置,第二个参数用于指定子串的结束位置。
下面是一个使用substr()函数截取中文字符串的例子:```php<?php$str = "中文";$start = 2;$end = 5;$new_str = substr($str, $start, $end);echo $new_str; //输出“文”>```在上面的代码中,我们首先定义了一个名为$str的字符串变量,赋值为“中文”。
然后,我们定义了两个变量$start和$end,分别赋值为2和5。
这表示我们要在$str字符串中从第2个字符开始,截取到第5个字符,即“中文”中的“文”。
接着,我们使用substr()函数对$str进行截取,参数分别为$start和$end。
最后,我们将结果赋值给新的变量$new_str并输出。
除了上述用法,PHP的substr()函数还有一些常用的参数,包括:- $length:指定子串的长度,默认是1。
- $offset:指定子串的起始偏移量,默认为0。
- $count:指定子串的截取次数,默认为1。
在这些参数的使用中,有些参数是可以组合使用的,例如$length 和$count。
在这种情况下,我们可以指定子串的长度和截取次数,从而获取到我们需要的子串。
在使用substr()函数进行截取的过程中,我们可能会遇到一些乱码问题。
这是因为 substr()函数是基于UTF-8编码的,如果我们的字符串不是UTF-8编码,那么在截取的过程中就可能会出现乱码。
截取指定字符串的函数
截取指定字符串的函数这是一个基本的字符串操作问题,需要使用编程语言中提供的字符串操作函数来实现。
```pythonimport redef split_chinese(text, length):pattern = pile(r'[\u4e00-\u9fa5]')chinese_chars = [char for char in text if pattern.match(char)]index = 0num_of_chars = 0for i, char in enumerate(chinese_chars):if num_of_chars + len(char) > length:index = ibreaknum_of_chars += len(char)return ''.join(chinese_chars[:index+1])text = '这是一篇测试文章,里面有很多中文字符,我们要从中截取连续的20个中文字符。
'print(split_chinese(text, 20))```这个例子中使用了正则表达式来匹配中文字符。
首先使用 `pile` 方法编译了一个匹配中文字符的正则表达式,然后使用 `pattern.match(char)` 来判断一个字符是否属于中文字符,最后使用列表解析式生成了一个仅包含中文字符的列表`chinese_chars`。
接下来,我们遍历这个列表,并对每个中文字符进行长度累加,直到累计长度超过要截取的长度。
记录下当前的下标,表示要截取的中文字符已经到达这个下标,然后使用`join` 函数将这些中文字符拼接成一个新字符串并返回。
在使用这个字符串操作函数时,需要注意输入的字符串格式应该为 UTF-8 编码。
此函数仅适用于截取中文字符,如果需要截取其他字符,需要根据具体情况进行修改。
字符串是计算机编程中经常使用的数据类型之一,常用于存储文本信息。
phpstrlen函数
phpstrlen函数
phpstrlen函数是一个内置函数,用于获取字符串的长度。
它接受一个字符串作为参数,并返回该字符串的长度,以字节数计算。
在使用该函数时,需要注意以下几点:
1. strlen函数只能用于获取字符串的长度,不能用于获取数组或对象的长度。
2. 在计算字符串长度时,strlen函数会将字符串中的每个字符都计算在内,包括空格、制表符、换行符等。
3. 对于中文字符,由于中文字符一般采用UTF-8编码,其占用的字节数不固定,因此在计算中文字符串长度时,需要注意。
4. strlen函数返回的长度是以字节数计算的,如果需要以字符数计算长度,可以使用mb_strlen函数。
而mb_strlen函数是一个多字节字符集(如UTF-8)安全的函数,可以正确地计算中文字符串的长度。
下面是一个使用strlen函数计算字符串长度的示例:
<?php
$str = 'Hello World!';
$len = strlen($str);
echo '字符串'$str'的长度为$len。
';
输出结果为:
字符串'Hello World!'的长度为12。
总之,strlen函数是一个非常常用的函数,在字符串处理、验证、截取等操作中经常用到。
掌握该函数的用法,对于编写高效、稳定的PHP程序非常有帮助。
php截取utf-8格式的字符串实例代码
php截取utf-8格式的字符串实例代码php 截取utf-8格式的字符串php中,我们经常需要截取字符串。
英⽂字符占⽤⼀个字节,中⽂字符占⽤两个字节,但中⽂字符占⽤两个字节是相对于GBK 编码⽽⾔但是在时下国际流⾏的UTF8编码中,⼀个中⽂字符占⽤3个字节。
本⽂章向⼤家介绍⼀个php 截取utf-8格式字符串的函数。
举例说明:function truncate_utf8_string($string, $length, $etc = '...') {$result = '';$string = html_entity_decode ( trim ( strip_tags ( $string ) ), ENT_QUOTES, 'UTF-8' );$strlen = strlen ( $string );for($i = 0; (($i < $strlen) && ($length > 0)); $i ++) {if ($number = strpos ( str_pad ( decbin ( ord ( substr ( $string, $i, 1 ) ) ), 8, '0', STR_PAD_LEFT ), '0' )) {if ($length < 1.0) {break;}$result .= substr ( $string, $i, $number );$length -= 1.0;$i += $number - 1;} else {$result .= substr ( $string, $i, 1 );$length -= 0.5;}}$result = htmlspecialchars ( $result, ENT_QUOTES, 'UTF-8' );if ($i < $strlen) {$result .= $etc;}return $result;}如果需要截取utf-8格式的字符串,直接调⽤这个函数即可。
php fopen utf-8编码
【PHP中fopen函数的UTF-8编码问题解析】在PHP编程中,文件操作是非常常见且重要的一部分。
而在文件操作中,fopen函数是一个非常常用的函数,它主要用来打开一个文件,并返回一个文件指针,供其他文件操作函数使用。
然而,在我们使用fopen函数时,经常会遇到文件编码的问题,特别是UTF-8编码。
本文将深入探讨在PHP中使用fopen函数时出现的UTF-8编码问题,并提供解决方案。
一、UTF-8编码是什么?UTF-8编码是一种针对Unicode的可变长度字符编码,它可以用1~4个字节来表示一个字符。
在国际化和多语言环境中,UTF-8编码被广泛应用,因为它可以表示世界上几乎所有国家的文字。
在PHP编程中,UTF-8编码常常用于处理中文、日文、韩文等非英文字符。
二、fopen函数在PHP中的使用在PHP中,fopen函数主要用于打开一个文件,并返回一个文件指针。
我们可以使用fopen函数来打开一个文件,然后进行读取、写入等操作。
然而,在使用fopen函数时,如果涉及到UTF-8编码的文件,就会出现一些问题。
因为fopen函数在默认情况下并不支持UTF-8编码的文件读取和写入。
三、针对UTF-8编码的解决方案1. 使用UTF-8编码的BOM头BOM(Byte Order Mark)是表示Unicode编码的文件开头的几个字节。
在UTF-8编码的文件中,可以在文件开头加上BOM头,以表示文件的编码格式。
在PHP中,如果我们要读取一个UTF-8编码的文件,可以在使用fopen函数打开文件之前,先检测文件的BOM头,然后根据BOM头来指定文件的编码格式。
2. 使用mb_convert_encoding函数在PHP中,可以使用mb_convert_encoding函数来进行字符编码的转换。
当我们使用fopen函数打开一个文件时,可以先使用mb_convert_encoding函数将文件内容转换为UTF-8编码,然后再进行读取和写入操作。
php utf8中文编码
php utf8中文编码在PHP中,UTF-8编码是一种常用的字符编码方式,它能够支持包括中文在内的多种语言字符。
在PHP中正确处理UTF-8编码的中文,对于网页的国际化、跨语言网站的开发和维护都非常重要。
一、UTF-8编码概述UTF-8编码是一种变长编码的字符集,它能够表示世界上几乎所有语言的字符。
UTF-8编码使用三个字节来表示中文字符,每个中文字符在UTF-8编码中占用三个字节。
这种编码方式使得中文字符在网页中能够得到更好的处理和显示。
二、PHP中的UTF-8编码处理在PHP中,处理UTF-8编码的中文需要使用正确的字符编码设置和函数。
以下是一些常用的PHP函数和设置:1.使用`header()`函数设置字符编码在网页的头部(`<head>`标签内)使用`header()`函数设置字符编码为UTF-8,以确保网页的字符集被正确识别和解析。
例如:```phpheader('Content-Type:text/html;charset=utf-8');```2.使用`mb_internal_encoding()`函数设置内部字符编码PHP内部使用一种字符编码方式来处理字符串,这个编码方式会影响到字符串的比较、连接、替换等操作。
使用`mb_internal_encoding()`函数可以设置内部字符编码为UTF-8。
例如:```phpmb_internal_encoding('UTF-8');```3.使用`mb_convert_encoding()`函数转换编码当需要将非UTF-8编码的字符串转换为UTF-8编码时,可以使用`mb_convert_encoding()`函数。
例如:```php$str=mb_convert_encoding($str,'UTF-8');```4.使用`iconv()`函数转换编码`iconv()`函数也可以用于字符串的编码转换,它支持更多的字符集和编码格式。
php截取指定长度中文字符的技巧
php截取指定长度中文字符的技巧php截取指定长度中文字符的技巧在PHP程序开发中,经常会执行字符串的截取操作,那么php如何截取指定长度中文字符呢?来看看店铺的分享吧!但字符串只要出现中文字符,就有可能导致PHP substr 中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了PHP substr中文乱码。
下面说一下解决办法:使用mb_stren()函数:[php] view plain copymixed mb_strlen ( string $str[, string $encoding = mb_internal_encoding() ] )第一个参数为要处理的的字符串第二个参数为编码方式忽略则使用默认编码根据此函数来截取中文字符串,自定义函数为:[php] view plain copy/*** @param string $string 要截取的字符串* @param int $len 要截取的长度* @param string $tail 截取后结尾替换的字符换* @return string $string 返回截取后的字符串*/function changeStr($string,$len,$tail){if(mb_strlen($string)>$len){$tmp = mb_substr($string,0,$len,'utf8');return $tmp.$tail;}else{return $arg;}}测试:[php] view plain copyheader('Content-type:text/html;charset=utf8');$string = "大众创业、万众创新成为全社会的共识。
php编码转换函数 详解PHP编码转换函数应用技巧
php编码转换函数详解PHP编码转换函数应用技巧php编码转换函数详解php编码转换函数应用技巧在php语言中mb_convert_encoding是一个php编码转换函数,可以帮助我们用来实现对多字节字符串编码的转换。
下面将会为大家进行详细介绍。
可以在存有须要的采用场合(例如:化解在gb编码环境下采用ajax产生的中文字乱码的问题)便利展开编码切换,以化解网页乱码的问题,采用非常便利,效率非常低,几乎积极支持所有编码。
php4>=4.0.6、php5版本积极支持。
php编码转换函数原型:/***多字节字符串编码转换函数**@paramstringstr需要进行编码转换的字符串*@paramstringto_encoding选定切换为某种编码如:gb、gbk、utf-8等*@parammixedfrom_encoding混合选定原来字串的编码,如:同时指定jis,eucjp-win,sjis-win混合编码*@returnstringstringmb_convert_encoding(stringstr,stringto_encoding[,mixedfrom_encoding])php编码切换函数采用举例:1、把gbk编码字串转换成utf-8编码字串<phpheader("content-type:text/html;charset=utf-8");echomb_convert_encoding("你就是我的好朋友","utf-8","gbk");?>2、把utf-8编码字串转换成gb编码字串//特别注意将此文件计算机上安装成utf-8编码格式文件再测试<?phpheader("content-type:text/html;charset=gb");echomb_convert_encoding("你就是我的好朋友","gb","utf-8");?>3、对整个页面进行转换该方法适用于所有编码环境。
ASP关于编码的几个有用的函数小结(utf8)
ASP关于编码的几个有用的函数小结(utf8)1、'UTF转GB---将UTF8编码文字转换为GB编码文字复制代码代码如下:function UTF2GB(UTFStr)for Dig=1 to len(UTFStr)'如果UTF8编码文字以%开头则进行转换if mid(UTFStr,Dig,1)="%" then'UTF8编码文字大于8则转换为汉字if len(UTFStr) >= Dig+8 thenGBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9)) Dig=Dig+8elseGBStr=GBStr & mid(UTFStr,Dig,1)end ifelseGBStr=GBStr & mid(UTFStr,Dig,1)end ifnextUTF2GB=GBStrend function'UTF8编码文字将转换为汉字function ConvChinese(x)A=split(mid(x,2),"%")i=0j=0for i=0 to ubound(A)A(i)=c16to2(A(i))nextfor i=0 to ubound(A)-1DigS=instr(A(i),"0")Unicode=""for j=1 to DigS-1if j=1 thenA(i)=right(A(i),len(A(i))-DigS)Unicode=Unicode & A(i)elsei=i+1A(i)=right(A(i),len(A(i))-2)Unicode=Unicode & A(i)end ifnextif len(c2to16(Unicode))=4 thenConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))elseConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))end ifnextend function'二进制代码转换为十六进制代码function c2to16(x)i=1for i=1 to len(x) step 4c2to16=c2to16 & hex(c2to10(mid(x,i,4)))nextend function'二进制代码转换为十进制代码function c2to10(x)c2to10=0if x="0" then exit functioni=0for i= 0 to len(x) -1if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i) nextend function'十六进制代码转换为二进制代码function c16to2(x)i=0for i=1 to len(trim(x))tempstr= c10to2(cint(int("&h" & mid(x,i,1))))do while len(tempstr)<4tempstr="0" & tempstrloopc16to2=c16to2 & tempstrnextend function'十进制代码转换为二进制代码function c10to2(x)mysign=sgn(x)x=abs(x)DigS=1doif x<2^DigS thenexit doelseDigS=DigS+1end iflooptempnum=xi=0for i=DigS to 1 step-1if tempnum>=2^(i-1) thentempnum=tempnum-2^(i-1)c10to2=c10to2 & "1"elsec10to2=c10to2 & "0"end ifnextif mysign=-1 then c10to2="-" & c10to2end function2、'GB转UTF8--将GB编码文字转换为UTF8编码文字复制代码代码如下:Function toUTF8(szInput)Dim wch, uch, szRetDim xDim nAsc, nAsc2, nAsc3'如果输入参数为空,则退出函数If szInput = "" ThentoUTF8 = szInputExit FunctionEnd If'开始转换For x = 1 To Len(szInput)'利用mid函数分拆GB编码文字wch = Mid(szInput, x, 1)'利用ascW函数返回每一个GB编码文字的Unicode字符代码'注:asc函数返回的是ANSI 字符代码,注意区别nAsc = AscW(wch)If nAsc < 0 Then nAsc = nAsc + 65536If (nAsc And &HFF80) = 0 ThenszRet = szRet & wchElseIf (nAsc And &HF000) = 0 Thenuch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)szRet = szRet & uchElse'GB编码文字的Unicode字符代码在0800 - FFFF之间采用三字节模版uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _Hex(nAsc And &H3F Or &H80)szRet = szRet & uchEnd IfEnd IfNexttoUTF8 = szRetEnd Function3、'GB转unicode---将GB编码文字转换为unicode编码文字复制代码代码如下:function chinese2unicode(Str)dim idim Str_onedim Str_unicodeif(isnull(Str)) thenexit functionend iffor i=1 to len(Str)Str_one=Mid(Str,i,1)Str_unicode=Str_unicode&chr(38)Str_unicode=Str_unicode&chr(35)Str_unicode=Str_unicode&chr(120)Str_unicode=Str_unicode& Hex(ascw(Str_one))Str_unicode=Str_unicode&chr(59)nextchinese2unicode=Str_unicodeend function4、'URL解码复制代码代码如下:Function URLDecode(enStr)dim deStrdim c,i,vdeStr=""for i=1 to len(enStr)c=Mid(enStr,i,1)if c="%" thenv=eval("&h"+Mid(enStr,i+1,2))if v<128 thendeStr=deStr&chr(v)i=i+2elseif isvalidhex(mid(enstr,i,3)) thenif isvalidhex(mid(enstr,i+3,3)) thenv=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))deStr=deStr&chr(v)i=i+5elsev=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1) ))))deStr=deStr&chr(v)i=i+3end ifelsedestr=destr&cend ifend ifelseif c="+" thendeStr=deStr&" "elsedeStr=deStr&cend ifend ifnextURLDecode=deStrend function'判断是否为有效的十六进制代码function isvalidhex(str)dim cisvalidhex=truestr=ucase(str)if len(str)<>3 then isvalidhex=false:exit functionif left(str,1)<>"%" then isvalidhex=false:exit functionc=mid(str,2,1)if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit functionc=mid(str,3,1)if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit functionend function%>您可能感兴趣的文章:•Oracle将字符编码从GBK转到UTF8,如何操作比较稳妥?•php字符编码转换之gb2312转为utf8•PHP截断标题且兼容utf8和gb2312编码•JoshChen_web格式编码UTF8-无BOM的小细节分析•js 编码转换 gb2312 和 utf8 互转的2种方法•基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换) •MySql修改数据库编码为UTF8避免造成乱码问题•PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码•php验证手机号码(支持归属地查询及编码为UTF8)•查看修改mysql编码方式让它支持中文(gbk或者utf8)•真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )•多种语言(big5\gbk\gb2312\utf8\Shift_JIS\iso8859-1)的网页编码切换解决方案归纳•Mysql数据库编码问题(修改数据库,表,字段编码为utf8) •XMLHTTP 乱码的解决方法(UTF8,GB2312 编码解码)•PHP UTF8编码内的繁简转换类•UTF8编码内的繁简转换的PHP类•PHP 截取字符串分别适合GB2312和UTF8编码情况•utf8编码检测方法分享。
php encode和decode的用法
php encode和decode的用法摘要:1.PHP 中的encode 和decode 的定义和作用2.encode 和decode 的用法和参数3.encode 和decode 的实际应用案例4.编码和解码的注意事项正文:在PHP 中,encode 和decode 是用于处理字符串编码和解码的常用函数。
encode 函数用于将字符串编码为特定的字符集,而decode 函数则用于将编码后的字符串解码回原始字符串。
首先,我们来了解encode 和decode 的用法和参数。
encode 函数的用法为:string encode(string $string, string $encoding);其中,$string 表示要编码的字符串,$encoding 表示编码方式,例如"utf-8"、"gbk"等。
decode 函数的用法为:string decode(string $string, string $encoding);其中,$string 表示要解码的字符串,$encoding 表示解码方式,例如"utf-8"、"gbk"等。
接下来,我们通过实际应用案例来了解encode 和decode 的具体用法。
假设我们有一个中文字符串"你好,世界!",我们想将它编码为UTF-8 格式的字符串,可以使用encode 函数,代码如下:```php$string = "你好,世界!";$encoding = "utf-8";$encoded_string = encode($string, $encoding);echo $encoded_string; // 输出:你好,世界!```同样地,如果我们想将一个UTF-8 格式的字符串解码回原始中文字符串,可以使用decode 函数,代码如下:```php$encoded_string = "你好,世界!";$encoding = "utf-8";$decoded_string = decode($encoded_string, $encoding);echo $decoded_string; // 输出:你好,世界!```在使用encode 和decode 函数时,需要注意的是,编码和解码的字符集必须一致,否则可能会导致解码失败。
php中文字符串截取多种方法汇总
php中⽂字符串截取多种⽅法汇总1. 截取GB2312中⽂字符串<?php< ?php//截取中⽂字符串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;}>2. 截取utf8编码的多字节字符串<?php< ?php//截取utf8字符串function utf8Substr($str, $from, $len){return preg_replace('#^(?:[ 00- 7F]|[ C0- FF][ 80- BF]+){0,'.$from.'}'.'((?:[ 00- 7F]|[ C0- FF][ 80- BF]+){0,'.$len.'}).*#s','$1',$str);}>3. UTF-8、GB2312都⽀持的汉字截取函数<?php< ?php/*Utf-8、gb2312都⽀持的汉字截取函数cut_str(字符串, 截取长度, 开始长度, 编码);编码默认为 utf-8开始长度默认为 0*/function cut_str($string, $sublen, $start = 0, $code = 'UTF-8'){if($code == 'UTF-8'){$pa = "/[ 01- 7f]|[ c2- df][ 80- bf]| e0[ a0- bf][ 80- bf]|[ e1- ef][ 80- bf][ 80- bf]| f0[ 90- bf][ 80- bf][ 80- bf]|[ f1- f7][ 80- bf][ 80- bf][ 80- bf]/"; 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');>4. BugFree 的字符截取函数< ?php/*** @package BugFree* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $*** Return part of a string(Enhance the function substr())**@authorChunshengWang<**************>* @param string $String the string to cut.* @param int $Length the length of returned string.* @param booble $Append whether append "...": false|true* @return string the cutted string.*/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);>以上就是本⽂的全部内容,希望对⼤家有所帮助,希望⼤家继续关注的最新内容。
PHP判断字符串所属编码:ASCII、GB2312、GBK、UTF-8、ISO-8859-1
PHP判断字符串所属编码:ASCII、GB2312、GBK、UTF-8、ISO-8859-1ASCII: ASCII的编码范围为0-127(⼗六进制:0x00-0x7F),判断函数:function isasciistr($str){for($i=0;$i<strlen($str);$i++){if(ord(substr($str,$i,1))>0x7F) return false;}return true;}ISO-8859-1:也称Latin1。
编码范围是0-255(0x00-0xFF)。
0x00-0x7F之间完全和ASCII⼀致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是⽂字符号,判断函数:因为ISO-8859-1的范围中包含了0xC2-0xDF以及0x80-0xBF,⽽UTF-8的两、三、四字节中都可能出现在这些范围。
所以,有可能将ISO-8859-1错判断为UTF-8,⼀般需要指定顺序,在两者都符合的情况下,顺序优先。
function islatin1str($str,$order=''){if(empty($order)) $order = array('ASCII','UTF-8','ISO-8859-1');$cs = ['ASCII'=>'isasciistr','GB2312'=>'isgb2312str','GBK'=>'isgbkstr','UTF-8'=>'isutf8str'];$flags = [];$charset = false;$other = [];for($i=0;$i<count($order);$i++){$ofun = NULL;if($order[$i]!='ISO-8859-1' && $order[$i]!='WINDOWS-1252'){$ofun = $cs[$order[$i]];if(!empty($ofun)){$charset = $order[$i]=='UTF-8' ? call_user_func_array("$ofun",array($str,true)): call_user_func("$ofun",$str);if($charset){$other[] = $order[$i];}}}}$flag = true;$N = count($other);if($N>0){for($k=0;$k<$N;$k++){if(array_search('ISO-8859-1',$order)!==false){if(array_search($other[$k],$order)<array_search('ISO-8859-1',$order)){return false;}}}}return true;}判断是否ISO-8859-1的函数中利⽤到了其它⼏个判断函数(见下边),分别是isasciistr()、isgb2312str()、isgbkstr()、isutf8str()。
PHP截取字符串函数substr()函数实例用法详解
PHP截取字符串函数substr()函数实例⽤法详解在PHP中有⼀项⾮常重要的技术,就是截取指定字符串中指定长度的字符。
PHP对于字符串截取可以使⽤PHP预定义函数substr()函数来实现。
下⾯就来介绍⼀下substr()函数的语法及其应⽤。
substr()函数语法格式如下:1substr(string, start, length);substr()函数参数说明如下:参数说明string指定字符串对象start指定开始截取字符串的位置。
如果参数start为负数,则从字符串的末尾开始截取length可选参数,指定截取字符的个数,如果length为负数,则表⽰取到倒数第length个字符说明:start的指定位置是从0开始计算的,即字符串中的第⼀个字符的位置表⽰为0。
start 为正数据从左向右读取字符start 为负数时就右向左读取字符length 默认是直到字符串的结尾,正数 - 在字符串的指定位置开始,负数 - 在从字符串结尾的指定位置开始。
使⽤substr()函数截取字符串中指定长度的字符,实例的代码如下:1 2 3 4 5 6 7 8 9<?phpecho substr("abcdefg",0); //从第0个字符开始截取echo"<br>";echo substr("abcdefg",2,4); //从第2个字符开始连续截取4个字符echo"<br>";echo substr("abcdefg",-4,2); //从倒数第4个字符开始截取2个字符echo"<br>";echo substr("abcdefg",0,-4); //从第0个字符开始截取,截取到倒数第4个字符>输出结果为:1 2 3 4abcdefg cdef deabc在开发⼀些web程序时,为了保持整个页⾯的合理布局,经常需要对于⼀些超长的⽂本,只要求显⽰其中的部分信息。
php中截取字符串方法
php中截取字符串⽅法在php中可以使⽤subst()的⽅法进⾏字符串截取echo substr("hello wo", 5, 3);在界⾯就会显⽰为 wo使⽤explode()进⾏截取$sti = "";print_r(explode(".", $sti));页⾯显⽰Array ( [0] => ww [1] => ba [2] => com )explode() 函数是使⽤⼀个字符串分割另⼀个字符串,并返回由字符串组成的数组。
explode函数有三个参数$delimiter, $string, $limit$delimiter是必需。
规定在哪⾥分割字符串。
并且不能为空字符串string是要进⾏分割的字符串,也是必须的limit是规定所返回的数组元素的数⽬,是可选的实例如下<?php$str = 'one,two,three,four';// 返回包含⼀个元素的数组print_r(explode(',',$str,0));print "<br>";// 数组元素为 2print_r(explode(',',$str,2));print "<br>";// 删除最后⼀个数组元素print_r(explode(',',$str,-1));>Array([0] => one,two,three,four)Array([0] => one[1] => two,three,four)Array([0] => one[1] => two[2] => three)使⽤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<?
/* 字符串截取,支持中文和其他编码
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param string $str 需要转换的字符串
* @param string $start 开始位置
* @param string $length 截取长度
* @param string $charset 编码格式
* @param string $suffix 截断显示字符
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if($suffix)
$suffixStr = "…";
else
$suffixStr = "";
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset).$suffixStr;
elseif(function_exists('iconv_substr')) {
return iconv_substr($str,$start,$length,$charset).$suffixStr;
}
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
return $slice.$suffixStr;
}
/*UTF8字符串长度
下面定义的strlen_utf8函数可以统计UTF-8字符串的长度,但不同的是,该函数并不考虑字节,这有些类似Javascript 中字符串的length方法,一个字符全部按 1 个长度计算。
<?php // 说明:计算UTF-8 字符串长度(忽略字节的方案)*/
function strlen_utf8($str) {
$i = 0;
$count = 0;
$len = strlen ($str);
while ($i < $len) {
$chr = ord ($str[$i]);
$count++;
$i++;
if($i >= $len) break;
if($chr & 0x80) {
$chr <<= 1;
while ($chr & 0x80) {
$i++;
$chr <<= 1;
}
}
}
return $count;
}
$str = "-PHP资讯"; echo strlen_utf8($str);
?>。