首页 » 网站推广 » php字符串截取技巧_PHP 字符串检索函数

php字符串截取技巧_PHP 字符串检索函数

duote123 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

haystack:干草堆,指定从哪个字符串中进行搜索

needle:指针,指定搜索的工具

php字符串截取技巧_PHP 字符串检索函数

汉字:gb2312字符集是两个字符 utf-8字符集是三个字节

php字符串截取技巧_PHP 字符串检索函数
(图片来自网络侵删)

字符串中一个空格是一个字节, 两个空格是二个字节

字符串处理函数 strstr() strpos() substr()

stristr stripos 不区分大小写

strrchr strrpos 从末了一次涌现的位置

strchr()是strstr()的别名, PHP没有供应strrstr()函数

<?php$fileName = "wuqi.jpg";echo strrchr($fileName, "."); //输出.jpg?>

strstr() 函数搜索一个字符串在另一个字符串中的第一次涌现, 该字符串返回别的部分(从匹配点)

string strstr ( string haystack, string needle)

haystack 必要参数, 指定从哪个字符串中进行搜索

needle 必要参数, 指定搜索的工具。
如果该参数是一个数值, 那么将搜索与这个数值的ASCII值相匹配的字符

<?phpecho strstr("mircosoft","s"); //输出softecho strstr("12563456","6"); //输出63456echo strstr("广东科技","科"); //输出科技?>

strpos() 函数返回字符串在另一个字符串中第一次涌现的位置, 如果没找到 needle, 将返回FALSE。

mixed strpos(string haystack,string needle,int offset)

<?php$newstring = 'abcdef abcdef' ;$pos = strpos ( $newstring , 'a' , 1 ); // $pos = 8, 两个空格是两个字节echo $pos;?>

实例:

if(!strpos("/upload/icon/BTC.png", "upload")){ //如果不存在upload$data['img'] = "/upload/".$data['img'];}

编写自定义函数

/ 查询字符是否存在于某字符串 @param $haystack 字符串 @param $needle 要查找的字符 @return bool/function str_exists($haystack, $needle){return !(strpos($haystack, $needle) === FALSE);}$str = "program_superadmin";if(str_exists("program_superadmin", "program_")){echo "存在";}else{echo "不存在";}

substr() 函数返回字符串的一部分。

string substr(string str,int start,[int length])

length为负数时, length长度变成offset形式(字符串位置),

<?php$test = "Your customer service is excellent";echo substr($test, 6, -14); //输出:ustomer servic?>

把稳:start取出的字符串的位置包含本身

length如果为负数,则不包含本身的字符串

如何去除末了一个字符?

echo substr("spqmd", 0, -1); // 返回值 spqm

在运用substr()函数对中笔墨符串进行截取时,牢记页面编码格式字符集utf-8(中文三个字节)和gb2312(中文两个字节)编码格式,

否则利用iconv_substr()函数进行截取

把稳:GB2312编码格式下substr()截取中文不涌现乱码的条件是substr()函数传入的第二个参数和第三个参数同时为偶数,就不会涌现乱码

而utf-8编码格式下substr()函数不涌现乱码的条件是substr()函数所截取的范围要完全截取单个中文(一个中文汉字是三个字节),

substr()函数截取中文的乱码是局部乱码(涉及单个汉字乱码),这与编码格式禁绝确而涌现整体乱码是有差异的;

因此substr不适宜截取中笔墨符串,应该编写自定义函数,详细可以参考php|自定义函数库|办理用substr()函数对中笔墨符串截取时乱码

当然推举利用iconv_substr()和mb_substr()函数截取中笔墨符串, 但mb_substr()函数效率高一些;

string iconv_substr ( string $str , int $offset [, int $length = iconv_strlen($str, $charset)

[, string $charset = ini_get("iconv.internal_encoding") ]] )

iconv_substr()函数实例:

<?php$str= 'guanghshs广水h fsgs!';echo '<br />';echo iconv_substr($str, 1, 12,"utf-8"); //第四个参数要与文件保存的编码格式同等?>

也可用于gb2312编码格式

<?php$str= 'guanghshs广水h fsgs!';echo '<br />';echo iconv_substr($str, 1, 12,"gb2312"); //第四个参数要与文件保存的编码格式同等?>

iconv_substr()函数基于charset检测到的字符集进行统计打算,而相对应的substr()函数则是基于字节的位移来打算。

实例:获取URL中的文件名称

<?phpfunction getFileName($url){$location = strrpos($url,"/")+1;$fileName = substr($url,$location);return $fileName;}echo getFileName("http://bbs.xxxxxx.net/index.php");echo getFileName("http://bbs.xxxxxx.com/images/Sharp/logo.gif");echo getFileName("file:///C:/windows/php.ini");?>

substr_count() 函数打算子串在字符串中涌现的次数。

int substr_count ( string $haystack , string $needle [, int $offset [, int $length ]] )

haystack 指定在哪个字符串中进行查找

needle 指定要查找的字符

<?phpecho substr_count("PHP函数参考大全,PHP范例宝典,PHP完备手册","PHP");?>

本示例的运行结果为:3。

处理中笔墨符

对付以上的字符串函数,有些可以用于中文,但有些却不适用中文。

以是, PHP 供应了专门的函数来办理这样的问题。

中笔墨符集可以是 gbk,utf8,gb2312

mb_strlen () 对应的函数为 strlen() 求字符串的长度

mb_strstr() 对应的函数为 strstr() 求某字符串到结尾的字符

mb_strpos() 对应的函数为 strpos() 求出字符最先涌现处

mb_substr() 对应的函数为 substr() 取出指定的字符串

mb_substr_count() 对应函数为 substr_str() 返回字符串涌现的次数

iconv() 字符串按哀求的字符编码来转换

iconv_strlen() 对应的函数为 strlen() 求字符串的长度

iconv_strpos() 对应的函数为 strpos() 求出字符最先涌现处

iconv_substr() 对应的函数为 substr() 求某字符串到结尾的字符

iconv_strrpos()对付的函数为 substr() 查找字符串在一个字符串中末了涌现的位置

substr_replace() 将字符串中的部分字符串更换为指定的字符串。

string substr_replace(string str,string replace,int start,int length)

start:

如果 start 为正数, 更换将从 string 的 start 位置开始。

如果 start 为负数, 更换将从 string 的倒数第 start 个位置开始。

length:

如果设定了这个参数并且为正数,表示 string 中被更换的子字符串的长度。

如果设定为负数, 它表示待更换的子字符串结尾处间隔 string 末端的字符个数。

如果没有供应此参数, 那么它默认为 strlen( string ) (字符串的长度)。

当然, 如果 length 为 0, 那么这个函数的功能为将 replacement 插入到 string 的 start 位置处。

<?php

echo substr_replace("Hello world","earth",6); //输出Hello earth

echo substr_replace("mircosoft","mir",0,2); //输出mingrisoft

?>

str_replace() 函数利用一个字符串更换字符串中的另一些字符。

mixed str_replace ( mixed search, mixed replace, mixed subject , int &count )

返回值为更换后的结果

search 指定将要被更换的字符串

replace 指定更换所利用的字符串

subject 指定被操作的字符串

&count 更换字符串实行的次数

<?php$str = "广东XXX科技";$str1 = array("XXX软件", "XXX图书", "XXX论坛");$str2 = array("YYY");$strs = str_replace($str2, $str, $str1);print_r($str1); //输出更换前的结果print_r($strs); //输出更换后的结果$str = str_replace("mirsoft", "广东XXX科技有限公司", "Welcome to mircosoft!", $count);echo "Welcome to mirsoft!";echo $str; //输出更换后的结果echo $count; //输出更换字符的次数?>

str_replace() 区分大小写

str_ireplace() 不区分大小写

str_split() 函数把字符串分割到数组中

array str_split ( string string , int split_length)

string 指定字符串工具

split_length 可选参数,指定每个数组元素的长度。
如果长度小于1,则返回false;如果指定长度大于字符串的长度,

则全体字符串以单个元素的形式返回

<?php$str = "Hello Friend";$arr1 = str_split($str);$arr2 = str_split($str, 3);print_r($arr1);print_r($arr2);?>

Array([0] => H[1] => e[2] => l[3] => l[4] => o[5] =>[6] => F[7] => r[8] => i[9] => e[10] => n[11] => d)Array([0] => Hel[1] => lo[2] => Fri[3] => end)

ord() 返回字符串 string 第一个字符的 ASCII 码值。

int ord ( string $string )

该函数是 chr() 的互补函数

string chr ( int $ascii )

返回相对应于 ascii 所指定的单个字符。

$str = "mingtianweilai来日";for($i = 0; $i < strlen($str); $i ++) {if(ord(substr($str,$i,1))>0xa0){ //判断汉字$tmpstr .= substr ( $str, $i, 2 ); //适宜用于gb2312编码$i++;}}

ASCII码表:http://www.asciima.com/

substr()

substr_replace()

把稳: 以上涉及截取中笔墨符串随意马虎涌现乱码的函数

实例:

编写不包括匹配点截取字符串的自定义函数

function sub_str($str, $sign){ $pos = strrpos($str, $sign); //从末了一次涌现的位置 return substr($str, $pos+1);}$str = "湖北省-荆州市-沙市区";echo sub_str($str, "-"); //沙市区

实例:

利用正则表达式截取字符串

<?php$str = "备份-moodle2-course-22-etl数据整合与预处理-20190604-1531-nu.mbz";echo preg_replace('/^(.)+course\-(\d)+\-/', '', $str)); //etl数据整合与预处理-20190604-1531-nu.mbz?>

相关文章

招商蛇口中国房地产龙头企业,未来可期

招商蛇口(股票代码:001979),作为中国房地产企业的领军企业,自成立以来始终秉持“以人为本,追求卓越”的经营理念,致力于打造高...

网站推广 2025-02-18 阅读1 评论0