iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP编程中的坑有哪些
  • 389
分享到

PHP编程中的坑有哪些

2023-06-17 01:06:05 389人浏览 安东尼
摘要

本篇内容介绍了“PHP编程中的坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、由于使用单引号,以“ ”为分割符,使用PHP函数ex

本篇内容介绍了“PHP编程中的坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、由于使用单引号,以“ ”为分割符,使用PHP函数explode分割字符串,不能正常分割。

原因:这个涉及到单引号与双引号的区别,在单引号中反斜杠不能被解析。因此,使用explode分割时,如果使用单引号, 会被当作字符串,而不是换行符,所以此时,不能正常分割。

类似问题还有字符串中包含{}的情况。在字符串中,要想使使用了{}包含的变量成功解析,该字符串必须使用双引号。

2、由于BOM头,使用PHP函数json_decode解析json字符串,不能解析成功。

原因:UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式。何谓BOM? "EF BB BF" 这三个字节就叫BOM,BOM的全称叫做"Byte Order Mard"。在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。在字节流之前有 BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无BOM都可以。UTF-8以字节为编码单元,没有字节序的问题。 UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是 594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是 “奎”还是“乙”?

如果文件保 存时,选择了使用 BOM,会使页面显示不正常。一般来说,php是不支持有BOM的,php文件应该保存为UTF-8无BOM类型,所以在保存 UTF8 编码PHP文件时,不要使用 BOM。

3、由于正反斜杠的原因,PHP函数basename使用无效

我们经常使用PHP函数basename,来从一个包含有指向一个文件的全路径的字符串中获取基本的文件名,但是由于正反斜杠的原因,有时你会发现basename函数无法生效,特别是在window系统和linux系统中切换时。原来,basename函数受操作系统影响,用在 windows 中,斜线(/)和反斜线()都可以用作目录分隔符,而在其它环境下只能是斜线(/)。因此,如果你在window系统下使用的反斜线(),那到其他系统时是有问题的。

为避免此影响,***都使用斜线(/)来作为目录分割符,对于使用了命名空间的情况,***先使用str_replace函数将反斜线()替换成斜线(/)。

4、trim系列函数的过多去除

trim函数的基本用法是去除最外边的空格、换行符之类的。因为其可选参数,很多人也会将其用于去除UTF8BOM头、文件扩展名等等,比如 ltrim($str, "\xEF\xBB\xBF"); rtrim($str, ".txt"); 。但是很快,就会发现这些函数会多去除了一些东西,比如本来是想去除后缀的,结果 logtext.txt 会变成了 logte 而不是 logtext。为什么呢?因为后面这个参数的意思不是一个完整字符串,而是字符列表,也就是说会一直检查最左/最右是否符合此列表的其中一个。

5、htmlspecialchars 函数默认不转义单引号

不少网站都是使用此函数作为通用的输入过滤函数,但是此函数默认情况是不过滤单引号的。这是非常非常地容易造成XSS漏洞。这样的做法和不过滤双引号没太大区别,只要前端写得稍微有点不规范(用了单引号)就会中招。因此,我们用的时候一定要给这个函数加上参数 htmlspecialchars( $data, ENT_QUOTES)

6、foreach的保留现象

使用 foreach($someArr as $someL){ } 之类的用法时,要注意***的一个 $someL 会一直保留到该函数/方法结束。而当使用引用的时候 foreach($someArr as &$someL){ }这是以引用来保存,也就是说后面若有使用同一个名字的变量名,将会把原数据改变(就像一个乱用的C指针)。为安全起见,建议每个foreach(尤其是引用的)结束之后都使用unset把这些变量清除掉。

7、小数(符点数)不能直接比较是否相等

比如 if( 0.5+0.2==0.7 ) 的结果是 false。究其原因是因为,PHP是基于C语言的,而C语言由于其二进制符点数的表示方式,导致不能精确表示大多数符点数。实际上,几乎所有的编程语言都没能精确表示小数(符点数),这是一个普遍存在的现象,因为这个是 IEEE 754 的缺陷。想要解决此问题,只能另立标准,似乎只有Mathematica解决了此问题。

8、字符串是否相同建议用 === 而非 ==

为什么呢?因为这个比较是弱类型。两个比较时,PHP会先尝试判别左右两者是否为数字。而问题就在于什么样的字符串是数字,是单纯的数字串吗?远远不只于此,还包括 0x 开头的十六进制,XXeX类型的科学记数法 等等,如 '12e0'=='0x0C' 得到的是true。而在数值类型与字符串比较时,甚至一些数字开头的非数值串,比如 12=='12这个串' 得到的值也会是 true。

所以这些情况下,可能会使本来并不相同的字符串被判定为相等。而使用===比较则为包含类型的比较,不会有任何转换,所以是可以准确比较字符串是否相同的。

另外吐槽一下JAVA,==居然比较不了字符串是否相等,因为字符串是一个对象,==变成了判断是否为同一个对象……

9、不能把switch中的case当作if来使用

在PHP函数switch……case中,switch 匹配的是case语句的值,而不能把case当if用。同时,switch表达式优先匹配与其值类型一致的case语句,类型不一致的放在后面处理,如下:

PHP编程中的坑有哪些

10、strrchr函数是查找某个字符,而不是查找字符串

在PHP手册上strrchr() 函数的解释是查找字符串在另一个字符串中***一次出现的位置,并返回从该位置到字符串结尾的所有字符。如果成失败,否则返回 false。实际上,这个函数是查找某个字符,而不是查找字符串。如下示例,很多人一开始肯定以为返回false,但实际上并不是。

PHP编程中的坑有哪些

“PHP编程中的坑有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: PHP编程中的坑有哪些

本文链接: https://www.lsjlt.com/news/286748.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP编程中的坑有哪些
    本篇内容介绍了“PHP编程中的坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、由于使用单引号,以“ ”为分割符,使用PHP函数ex...
    99+
    2023-06-17
  • Java开发编程的坑有哪些
    这篇文章主要讲解了“Java开发编程的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java开发编程的坑有哪些”吧!随处可见的 Null 值我见过很...
    99+
    2024-04-02
  • 编写Java的坑有哪些
    本篇内容主要讲解“编写Java的坑有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“编写Java的坑有哪些”吧!1、对象比较方法JDK 1.7 提供的 Objects.equals 方法,非常...
    99+
    2023-06-16
  • Java Stream流式编程常见的坑有哪些
    本篇内容介绍了“Java Stream流式编程常见的坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • PHP的编程语句有哪些
    小编给大家分享一下PHP的编程语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 简单的语句每行至多包含一条语句,例如:以下为引用的内容:$argv++;...
    99+
    2023-06-17
  • PHP编程中常用的异步编程算法有哪些?
    随着互联网技术的不断发展,Web应用程序对并发性和响应性的需求越来越高。异步编程成为了一种解决方案,因为它可以充分利用现代计算机的多核心和并行处理能力,提高Web应用程序的性能和响应速度。在PHP编程中,异步编程也变得越来越重要。本文将介...
    99+
    2023-10-29
    编程算法 api 异步编程
  • PHP编程中常用到的PHP类库有哪些
    这篇文章给大家分享的是有关PHP编程中常用到的PHP类库有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、图表库下面的类库可以让你很简的创建复杂的图表和图片。当然,它们 需要GD库的支持。1、pChart ...
    99+
    2023-06-17
  • Java中常见的坑有哪些
    今天小编给大家分享一下Java中常见的坑有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前言同一个代码“坑”,踩第一...
    99+
    2023-06-27
  • golang for range中的坑有哪些
    本篇内容主要讲解“golang for range中的坑有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“golang for range中的坑有哪些”吧!go 语言 for range 中的...
    99+
    2023-07-04
  • Try-Catch-Finally中的坑有哪些
    这篇文章主要讲解了“Try-Catch-Finally中的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Try-Catch-Finally中的坑有哪...
    99+
    2024-04-02
  • PHP编程效率的要点有哪些
    这篇文章主要介绍PHP编程效率的要点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则  不会,注意:...
    99+
    2023-06-17
  • Java CPP的坑有哪些
    这篇文章主要讲解了“Java CPP的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java CPP的坑有哪些”吧!1.分清楚System.load与System.loadLibra...
    99+
    2023-06-04
  • Java中ReentrantLock常见的坑有哪些
    这篇文章主要介绍“Java中ReentrantLock常见的坑有哪些”,在日常操作中,相信很多人在Java中ReentrantLock常见的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Re...
    99+
    2023-06-30
  • PHP 异步编程技术有哪些?
    php 异步编程技术指南有下列主要方法:reactphp:事件驱动的库,提供事件循环和反应式扩展。amphp:基于协程的库,使用生成器函数和协程进行异步编程。guzzle psr7:用于...
    99+
    2024-05-06
    php 异步编程 并发请求 swoole
  • VUE使用中踩过的坑有哪些
    小编给大家分享一下VUE使用中踩过的坑有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.路由变化页面数据不刷新问题出现这种...
    99+
    2024-04-02
  • BigDecimal遇到的坑有哪些
    这篇文章主要介绍“BigDecimal遇到的坑有哪些”,在日常操作中,相信很多人在BigDecimal遇到的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”BigDec...
    99+
    2024-04-02
  • 小程序设计中需要避开的坑有哪些
    这篇文章主要介绍了小程序设计中需要避开的坑有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇小程序设计中需要避开的坑有哪些文章都会有所收获,下面我们一起来看看吧。一、设计稿最好用二倍图UI设计师都喜欢用一倍图...
    99+
    2023-06-27
  • 关于C++的坑有哪些
    这篇文章主要讲解了“关于C++的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于C++的坑有哪些”吧!1. string的字符串拼接,导致coredump该问题的核心点在于第9行,...
    99+
    2023-06-16
  • 使用Python的坑有哪些
    这篇文章主要讲解了“使用Python的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Python的坑有哪些”吧!坑01 - 整数比较的坑在 Python 中一切都是对象,整数也是...
    99+
    2023-06-02
  • PHP中实时数据类型的编程算法有哪些?
    PHP是一种广泛使用的编程语言,它支持多种数据类型,包括实时数据类型。实时数据类型是指可以动态地改变其值,而不需要重新声明变量类型的数据类型。在PHP中,实时数据类型包括字符串、整数、浮点数、数组和对象等。本文将介绍PHP中实时数据类型的编...
    99+
    2023-08-10
    实时 数据类型 编程算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作