热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php字符串处理函数常见问题

PHP的字符串处理功能非常强大,主要包括:字符串输出echo():输出一个或多个字符串print():输出一个字符串prin

PHP 的字符串处理功能非常强大,主要包括:

字符串输出

  • echo():输出一个或多个字符串
  • print():输出一个字符串
  • printf():输出格式化字符串

字符串去除

  • trim():去除字符串 首尾 空白等特殊符号或指定字符序列
  • ltrim():去除字符串 首 空白等特殊符号或指定字符序列
  • rtrim():去除字符串 尾 空白等特殊符号或指定字符序列
  • chop():同 rtrim()

字符串连接

  • implode():使用字符将数组的内容组合成一个字符串
  • join():同 implode()

字符串分割

  • explode():使用一个字符串分割另一个字符串
  • str_split():将字符串分割到数组中

字符串获取

  • substr():从字符串中获取其中的一部分
  • strstr():查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符
  • subchr():同 strstr()
  • strrchr():查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符

字符串替换

  • substr_replace():把字符串的一部分替换为另一个字符串
  • str_replace():使用一个字符串替换字符串中的另一些字符

字符串计算

  • strlen():取得字符串的长度
  • strpos():定位字符串第一次出现的位置
  • strrpos():定位字符串最后一次出现的位置

字符串 XHTML 格式化显示

  • nl2br():将换行符 n 转换成 XHTML 换行符
  • htmlspecialchars():把一些特殊字符转换为 HTML 实体
  • htmlspecialchars_decode():把一些 HTML 实体转换为特殊字符,htmlspecialchars() 的反函数

字符串存储(转义)

 

 

  • addslashes():对特殊字符加上转义字符。
  • stripslashes():addslashes() 的反函数。


一、PHP常用库函数介绍

1. PHP字符串操作常用函数

  确定字符串长度

  int strlen(string str)

  比较两个字符串

  a. strcmp函数对两个字符串进行二进制安全的比较,并区分大小写

  int strcmp(string str1,string str2)

  b. 以不区分大小写的方式比较两个字符串

  int strcasecmp(string str1,string str2)

  求两个字符串相同部分

  int strspn(string str1,string str2)

  求两个字符串的不同部分

  int strcspn(string str1,string str2)

  处理字符串大小写

  a. 将字符串全部转换为小写

  string strtolower(string str)

  b. 将字符串全部转化为大写

  string strtoupper(string str)

  c. 将字符串第一个字符大写

  string ucfirst(string str)

  d. 把字符串中每个单词的首字符转换为大写

  string ucwords(string str)

  字符串与HTML相互转换

  a. 将换行符转换为HTML终止标记

  string bl2br(string str)

  b. 将特殊字符转换wieldHTML等价形式(不解析格式)

  string htmlentities(string str[,int quote_style[,int charset]])

  string htmlspecialchars(string str[,int quote_style[,string charset]])

  c. 将HTML转换为纯文本,移除所有的php和html标签

  string strip_tags(string str[,string allowable_tags])

  d. 将文本转换为HTML等价形式

  array get_html_translaction_table(int table[,int quote_style])

  e. 创建一个自定义的转换清单

  string strtr(string str,array replacements)

  正则表达式函数的替代函数

  a. strtok函数根据预定义的字符串列表来解析字符串

  string strtok(string str,string tokens):返回直到遇到tokens之前的所有内容

  b. 根据预定义的定界符分析字符串

  array explode(string separator,string str[,int limit]):分割字符串

  c. 将数组转换为字符串

  string implode(string delimiter, array array)

  d. 找到字符串的第一次出现

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

  e. 找到字符串的最后一次出现

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

  f. 用另外一个字符串替代字符串的所有实例

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

  g. 获取字符串的一部分strstr返回字符串中预定义字符串第一次出现开始的剩余部分

  string strstr(string str,string occurrence)

  h. 根据预定义的偏移返回字符串一部分

  string substr(string str,int start[,ing length]):start可为负数,表示倒数第几开始

  i. 确定字符串出现的频率

  int substr_count(string str,string substring)

  j. 用另一个字符串替换一个字符串的一部分

  string substr_replace(string str,string replacement,int start[,int length])

  填充和剔除字符串

  a. 从字符串开始出裁剪字符

  string ltrim(string str[,string charliset])

  b. 从字符串结尾裁剪字符

  string rtrim(string str[,string charliset])

  c. 从字符串两端裁剪字符

  string trim(string str[,string charliset])

  d. 填充字符串

  string str_pad(string str,int length[,string pad_string[,int pad_type]])

  字符和单词计数

  a. 字符串中字符计数

  mixed count_chars(string str[,mode])

  b. 字符串中单词总数计数

  mixed str_word_count(string str[,int format])


2. PHP Web开发中常用的三个表单验证函数

(1)isset();——适合于检测是否存在这个参数。用来避免引用不存在的变量

      定义和作用范围:用于测试一个变量是否具有值(包括0,FALSE,或者一个空字串都返回true,但不能是NULL),即:“http://localhost/?fo=”也是可以通过检测,因此不适用。但如果是“http://localhost/”参数中并不含fo参数,就可以用isset来检测,此时isset($_GET['fo'])返回false

      不适用于:该函数不适合于验证html表单中的文本的有效方式。要检查用户输入文本是否有效,可以用empty();

(2)empty();——最好用的一个函数,用于检查变量是否具有空值

      定义和作用范围:用于检查变量是否具有空值:包括:空字串,0,null 或false,这些都返回false,即:“http://localhost/?fo=”或“http://localhost/?fo=0”时,empty检测出来的结果都是ture

      不适用范围:不适用于检测可为0的参数

(3)is_numeric();——检查变量是否为数字

      定义和作用范围:检查变量是否为数字,只适用于检测数字

      不适用范围:但假如参数名不存在,会出错,因此不适合于第一层检测

      另外还有一个好用的验证函数是checkdate(month,day,$year),用来确认某个日期是否存在或在过去是否存在

 综合示例:

这是表单

这是验证

ini_set("display_errors",1);
//ini_set("error_reporting",E_ALL); print_r
error_reporting(E_ALL);$a=NULL;
if(isset($a))echo '变量$a的isset为真';echo '

isset的情形:

';
if(isset($_GET['fo'])){
echo '变量\'fo\'的isset为真,变量可用';
}else{
echo '变量\'fo\'的isset为假,无变量设置';
}echo '

empty的情形:

';
if(empty($_GET['fo'])){
echo '变量\'fo\'的empty为真,即空值或无效值';
}else{
echo '变量\'fo\'的empty为假,有值';
}echo '

is_numeric的情形:

';
if(is_numeric($_GET['fo'])){ //在参数中无fo参数时,则出错。
echo '变量\'fo\'的is_numeric为真,是数字';
}else{
echo '变量\'fo\'的is_numeric为假,不是数字';
}echo "

\$_GET['fo']=''的情形:

";
if($_GET['fo']==''){ //在参数中无fo参数时,则出错。
echo 'fo无值,空的字符串';
}elseif($_GET['fo']!=''){
echo 'fo有值,不为\'\'.';
}echo "

\$_GET['sex']='m'的情形:

";
if($_GET['sex']=='m'){ //当参数中无sex变量时就会出错。
echo '男的';
}elseif($_GET['sex']=='f'){
echo '女的';
}
?>

 

3. 其他常用库函数

(1)ini_set ini_get——可操作配置参数列表

      为了使自己的程序在不同的平台中拥有更好的兼容性,很多时候我们都要获取当前Php的运行环境参数。

      比如我们常用到的:

获取 magic_quotes_gpc 状态,来决定当表单提交时我们是否转义(addslashes)数据;

设定 max_execution_time 来延长程序的执行时间;

设定 error_reporting 使自己的项目在开发与运营阶段切换;

设定 memory_limit 加大内存等等…

(2)ini_set(string varname, string newvalue ) : //设定环境配置的参数

ini_get(string varname) : //获取环境配置的参数

PHP ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效。不是所有的选项都能被改函数设置的。具体那些值能够设置,可以查看手册中的列表

其实你把PHP ini_set函数和ini_get结合使的话,非常好。比如你想在配置文件里添加自己的包含文件路径,但是你有没有权限更改php.ini,那么你可以结合两个函数:

ini_set ( 'include_path' , ini_get ( 'include_path' ). ':/your_include_dir:' ); 

(3)chdir(dirname(__FILE__)); //切换到global.php所在目录

(4)ob_start('ui_handler');//设置输出缓冲区句柄为ui_handler,即系统首页面为ui_handler函数所定义的内容

(5)int intval(mixed var, int [base]);

      本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。

(6)error_reporting(report_level) 函数—— 设置 PHP 的报错级别并返回当前级别
      其中report_level可取值为0、1、2、4、8、16、32、……、4096、8191
      例子:任意数目的以上选项都可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:

 

4. 常见疑难问题解答

1、rand(min,max)与mt_rand(min,max)的区别

如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

2、PHP echo, print, print_r, printf, sprintf和var_dump函数的区别和使用

1) echo
    echo() 实际上不是一个函数,是php语句,因此您无需对其使用括号。不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误。而且echo是返回void的,并不返回值,所以不能使用它来赋值。
例子:

?>

2) print
    print() 和 echo() 用法一样,但是echo速度会比print快一点点。实际上它也不是一个函数,因此您无需对其使用括号。不过,如果您希望向print() 传递一个以上的参数,那么使用括号会发生解析错误。注意print总是返回1的,这个和echo不一样,也就是可以使用print来赋值,不过没有实际意 义。
例子:

?>

3) print_r 函数——即打印预定义变量的值
    print_r函数打印关于变量的易于理解的信息。
    语法:mixed print_r ( mixed $expression [, bool return ] )
    如果变量是string , integer or float , 将会直接输出其值,如果变量是一个数组,则会输出一个格式化后的数组,便于阅读,也就是有key和value对应的那种格式。对于object对象类同。 print_r有两个参数,第一个是变量,第二个可设为true,如果设为true,则会返回字符串,否则返回布尔值TRUE。
例子:

?>

4) printf函数
    printf函数返回一个格式化后的字符串。
    语法:printf(format,arg1,arg2,arg++)
    参数 format 是转换的格式,以百分比符号 (“%”) 开始到转换字符结束。下面是可能的 format 值:
* %% – 返回百分比符号
* %b – 二进制数
* %c – 依照 ASCII 值的字符
* %d – 带符号十进制数
* %e – 可续计数法(比如 1.5e+3)
* %u – 无符号十进制数
* %f – 浮点数(local settings aware)
* %F – 浮点数(not local settings aware)
* %o – 八进制数
* %s – 字符串
* %x – 十六进制数(小写字母)
* %X – 十六进制数(大写字母)
    arg1, arg2, arg++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的,在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入 % 符号之后,由数字和 “\$” 组成。可使用数字指定显示的参数,详情请看例子。
例子:

?>

5) sprintf函数
    此函数使用方法和printf一样,唯一不同的就是该函数把格式化的字符串写写入一个变量中,而不是输出来。
例子:

?>

6) var_dump函数
    功能: 输出变量的内容、类型或字符串的内容、类型、长度。常用来调试。
例子:

 

?>


转:https://www.cnblogs.com/yttsic/p/3677618.html



推荐阅读
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
fanersai_668
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有