0x01:根据预定义的字符对字符串进行词法分析

/*

* 在处理大量信息时,正则表达式函数会使速度大幅减慢。应当在需要使用正则表达式解析比较复杂的字符串时才能使用这些函数。如果要解析简单的表达式,还可以采用很多可以显著加快处理过程的预定义函数。

*/

/*

* 根据预定义的字符对字符串进行词法分析

* strtok()函数根据预定义的字符列表来解析字符串。其形式为:

* string strtok(string str,string tokens)

* strtok()函数,必须连续调用这个函数,才能完全的对一个字符串进行词法分析;每次调用该函数只是对字符串的下一部分做词法分析。但是,str参数只需要指定一次,因为函数会跟踪str中的位置,知道完全对str完成了词法分析,或者指定了心得str参数。

* 如下面的例子所示:

*/

$info="lv chen yang|Hello:world&757104454@qq.com";

//定义界定符,包括(|)(:)( )(&)

$tokens="|:& ";

$tokened=strtok($info, $tokens);

while ($tokened)

{

echo "Element:$tokened
";

//连续调用strtok()函数,完成对整个字符串的词法分析

$tokened=strtok($tokens);

}

?>

0x02:根据预定义的定界符分解字符串

/*

* 根据预定义的定界符分解字符串:explode()函数

* 次函数将字符串str分成子串数组,其形式为:

* array explode(string separator,string str [, int limit])

* 原字符串被根据separator指定的字符串分割为不同的元素。元素的数量可以通过可选的参数limit来限制。可以结合explode()/sizeof()和strip_tags()来确定给定文本块中单词的总数

* 如下所示:

*/

$summary="

In the latest installment of the ongoing Developer.com PHP series.

I discuss the many improvements and addtions to

PHP object-oriented architecture.

";

echo "
";

$words=explode(' ', strip_tags($summary));

echo "This sentence's lenght is:".sizeof($words);

/*

* explode()函数始终比preg_split、spilt()和spliti()快得多。因此,在不需要使用正则表达式时,一定要使用这个函数。

*/

?>

0x03:将数组转换成字符串

/*

* 将数组转换成字符串

* explode()函数可以根据界定字符将字符串转换为相应的数组,但是可以通过implode()函数将数组转换为规定的界定字符为界限的字符串

* 其形式为:

* string implode(string delimiter,array pieces)

* 如下所示:

*/

$citys=array("Chengdu","Chongqing","Beijing","Shanghai","Guangzhou");

$citystring=implode("|", $citys);

echo $citystring;

?>

0x04:解析复杂的字符串

/*

* 解析复杂的字符串

* strpos()函数在字符串中以区分大小写的方式找到substr第一次出现的位置,其形式为

* int strpos(string str,string substr [,int offset])

* 可选参数offset指定开始搜索的位置。如果substr不在str中,则strpos()返回False。可选参数确定strpos()从哪里开始搜索。

* 以下例子将确定第一次访问index.html的时间戳:

*/

$substr="index.html";

$log=<<

192.168.1.1:/www/htdocs/index.html:[2013/06/26:13:25:10]

192.168.1.2:/www/htdocs/index.html:[2013/06/26:13:27:16]

192.168.1.3:/www/htdocs/index.html:[2013/06/26:13:28:45]

logfile;

echo "
";

//$substr在log中首次出现的位置是什么

$pos=strpos($log, $substr);

//查找行结束的数值位置

$pos1=strpos($log,"\n",$pos);

//计算时间戳的开始

$pos=$pos+strlen($substr)+1;

//检索时间戳

$timestamp=substr($log, $pos,$pos1-$pos);

echo "The file index.html was first accessed on: $timestamp
";

/*

* 函数stripos()和函数strpos()函数用法相同,唯一的区别是stripos()不区分大小写。

*/

?>

0x05:找到字符串最后一次出现的位置

/*

* 找到字符串中最后一次出现的位置

* strrpos()函数搜索字符串的最后出现的位置,返回它的位置(数值序号)其形式为:

* int strrpos(string str,char substr [,offset])

* 可选参数offset确定strrpos()函数的开始搜索位置。加入希望缩短冗长的新闻总结,

* 截取总结中的某些部分,并用省略号代替所截去的部分。然而,并非简单的将总结明确的剪为所需的长度,

* 你可能希望以一种对用户友好的方式进行剪切,截取到与阶段长度最接近的单词末尾。

* 如下例子所示

*/

$limit=100;

$summary="In the latest installment of the ongoing Developer.com PHP series.

I discuss the many improvements and addtions to

PHP object-oriented architecture. ";

if(strlen($summary)>$limit)

$summary=substr($summary, 0,strrpos(substr($summary, 0,$limit)," "))."...";

echo  $summary;

?>

0x06:用另外一个字符串替换字符串的所有实例

/*

* 用另外一个字符串替换字符串的所有实例

* str_replace()函数以区分大小写的方式用另外一个字符串奇幻某个字符串的所有实例。其形式为:

* mixed str_replace(string occurrence, mixed replacement, mixed str [,int count])

* 如果str中没有找到occurrence,则str保持不变,如果定义了可选参数count,则只替换str中count个currence。

* 此函数很适合对自动获取电子邮箱地址的程序隐藏电子右键地址,如下所示:

*/

$email="lvchenyang@live.cn";

$email=str_replace("@", "(at)", $email);

echo "
".$email;

?>

0x07:获取字符串的一部分

/*

* 获取字符串的一部分

* strstr()函数返回字符串中从预定义的字符串的第一个出现开始的剩余部分(包括occurrence这个字符串)。其形式为:

* string strstr(string str,string occurrence[,bool fefore_needle])

* 可选参数before_needle会改变strstr()的行为,使函数返回字符串在第一个出先之前的部分。

* 下面的例子是获取右键中的域名,结合ltrim()函数

*/

$url="lvchenyang@live.cn";

echo "
".ltrim(strstr($url, "@"),"@");

?>

0x08:根据预定义的便宜返回字符串的一部分

/*

* substr()函数返回字符串中位于start和start+length之间的部分,其形式为:

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

* 如果没有指定的可选参数,则返回从start到str末尾的字符串

* 如下所示

*/

$str="lvchenyang";

echo "
".substr($str, 2,4);

//output: chen

?>

0x09:确定字符串出现的频率

/*

* 确定字符串出现的频率

* substr_count()返回一个字符串在另外一个字符串中出现的次数。其形式为:

* int substr_count(string str,string substring [,int offset [,int length]])

* 可选参数offset和length指定字符串便宜(从便宜处开始尝试匹配字符串)和字符串长度(从便宜开始搜索的长度)

* 下面的例子确定了每个单词在这个sentence中出现的次数

*/

$talk=<<

I am acertain that we could dominate mindshare in this space with

our new product, extablishing a true synergy beteen the marketing

and product development teams. We'll own this space in thress months.

talk;

echo "
";

$sentencearray=explode(" ", $talk);

foreach ($sentencearray as $item)

{

echo "The word $item appears(".substr_count($talk, $item).")times
";

}

?>

0x10:用另一个字符串替换一个字符串的一部分

/*

* 用另外一个字符串替换一个字符串的一部分

* substr_replace()函数将字符串中的一部分用另一个字符串替换,替换从指定的start位置开始,知道start+length位置结束。

* 其形式为:

* stringsubstr_replace(string str,string repalcement,int start和length的值。

* 如下所示,替换电话号码中间4位

*/

$phonenum="15926841384";

echo "
".substr_replace($phonenum, "****", 3,4);

?>

php 字符串替换 正则表达式,PHP中一些可以替代正则表达式函数的字符串操作函数...相关推荐

  1. 7-65 字符串替换 (15 分) 本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换: 原字母 对应字母 A Z B Y C X D W … … X C Y B Z A

    7-65 字符串替换 (15 分) 本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换: 输入格式: 输入在一行中给出一个不超过80个字符.并以回车结束的字符串. 输出格式: 输出在一行 ...

  2. asp系统转换php系统时间函数,ASP_ASP中的时间函数大全 时间操作函数,Date 函数 描述:返回当前系统日 - phpStudy...

    ASP中的时间函数大全 时间操作函数 Date 函数 描述:返回当前系统日期. 语法:Date DateAdd 函数 描述:返回已添加指定时间间隔的日期. 语法:DateAdd(interval, n ...

  3. python中对文件、文件夹(文件操作函数)的操作

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

  4. java回调函数 final_java中带回调函数的字符串替换,类似js中的replace(rgExp,function)...

    在js中, replace函数的功能很强大,其原型是stringObj.replace(rgExp, replaceText), 而replaceText也可以是返回替换文本的函数.这个功能还是比较好 ...

  5. Hive常用函数(日期函数,取整函数,字符串操作函数,集合操作函数)

    常用函数 常用日期函数 常用取整函数 常用字符串操作函数 集合操作函数 多维分析 常用日期函数 unix_timestamp:返回当前或指定时间的时间戳 select unix_timestamp() ...

  6. 字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...

    本帖最后由 奉聪 于 2017-1-25 14:54 编辑 *******前言******* 我数一下,我发了几个帖子,1.2.3? 哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步! ...

  7. SKB中的各种长度、数据指针和操作函数

    skb结构体中的长度和数据指针 len: 线性区和分片区域的总长度 data_len:分片区域frag page中的数据长度 len-data_len: 当前协议层中的线性区长度 head:线性区的起 ...

  8. java字符串替换括号(中文和英文括号),通过正则表达式替换,如果直接替换中文可以替换,但是英文替换会报错

    public static void main(String[] args) {String str = "(nihao),(henhao),(nichilema?),(chiguole)& ...

  9. c语言字符串升序输出,编写程序将已按升序排好的两个字符串a和b中的字符按升序归并到字符串c中,最后输出”abcdefghijklmnpq”。...

    满意答案 sjoest 2014.08.18 采纳率:59%    等级:8 已帮助:663人 (1)char a[]="acegikm";       a数组没有赋予数组大小,所 ...

最新文章

  1. SAP 金属行业实施项目的GAP之Metall Balance
  2. Springboot 启动问题
  3. c语言错误 xef代表什么,单片机C语言代码手册 含100多个经典C程序
  4. leetCode-删除排序数组中的重复项
  5. 删除microsoft_如何从您的Microsoft帐户中删除设备
  6. 【HDU - 2200】Eddy's AC难题(简单组合数学)
  7. 马鞍山红星中学2021年高考成绩查询,2021年马鞍山高考状元名单公布,马鞍山高考状元学校资料及最高分...
  8. OpenCV实战5: LBP级联分类器实现人脸检测
  9. 搜索推荐项目EFLS开源 | 阿里妈妈联邦学习解决方案详解
  10. 《javascript高级程序设计》第八章 The Browser Object Model
  11. 看看什么是藏匿而不申请[重复]
  12. django mariadb filter month 失败
  13. express url跳转(重定向)的实现:res.location() res.redirect()
  14. IDDD 实现领域驱动设计-上下文映射图及其相关概念
  15. rust第三人称视角插件_第三人称视角ThirdPerson Everything Mod
  16. Latex 页眉页脚在一章的第1页之后不显示及位置混乱的问题解决
  17. 手机浏览器下载IOS版APP
  18. 删除自定义reg注册表
  19. 深度学习理论——ssd从之前的网络断点接着训练
  20. mmhmm重塑视频会议、2020新款emoji可爱来袭、微软将推云游戏服务xCloud等| Decode the Week...

热门文章

  1. 解决yum安装报错Protected multilib versions
  2. Java基础概念(一)
  3. Android启动画面实现
  4. SqlServer分页排序存储过程 V1.0
  5. Java Scanner类
  6. git或者ssh出错 fatal:open /dev/null or dup failed: No such file or directory、弹出mitty.dump文件
  7. performance metrics
  8. Effective C#: Item 1 Always use properties instead of accessible data members
  9. [git]一个本地仓库,多个远程仓库
  10. Noip前的大抱佛脚----字符串