PHP里,有string的概念。
string里,每个字符的大小为byte(与PHP相比,Java的每个字符为Character,是UTF8字符,C语言的每个字符可以在编译时选择)。
byte里,有ASCII代码的字符,例如ABC,123,abc,也有一些特殊字符,例如回车,退格之类的。
特殊字符很多是不能显示的。或者说,他们的显示方式没有标准,例如编码65到哪儿都是字母A,编码97到哪儿都是字符a,退格在有的地方显示成一个符号,在有的地方就会真的把前一个字符退掉。
PHP 以C为基础,所以很多描述都是以C为对比。C的字符串里,一种经典的定义就是,以编码0作为字符串的结尾。那么,假设这样一个string,里面3个字符 的编码分别是97,0,97。那么,C里面如果有str_replace等效的函数, 利用它把97换成98,那么这个函数读取到0的时候,就认为已经结 束了,就会得到98,0,97。跟它对应的,PHP里的str_replace是二进制安全的,那么这个0不会被视为特殊的结束符号,于是结果就是 98,0,98。
【二进制安全】在PHP文档里,基本就是这么一个意思:C语言里的功能类似的函数会对有的字符特别处理,而PHP这个函数对于所有字符一视同仁,不用担心会有特殊字符影响处理,特别不用担心编码0字符。

二进制安全函数:

例如:dirname

解释二:

在PHP中经常看到一些函数有个标识「binary safe」, 即二进制安全,这是个什么概念呢? 在一个字符串中会包含很多的字符,这其中就包括NULL。「binary safe」的函数会把它的输入字符串原封不动的进行处理;而非「binary safe」的函数是在底层直接调用C的字符串相关的函数,而这些函数处理一个字符串会把NULL后边的内容忽略掉。

例子

以下例子中,如果函数strlen是binary safe的话,我们将得到7;如果函数是非binary safe的话,我们将得到3 ,由于strlen是binary safe的,所以实际上以下的运行结果是7:

<?php
$str = "abcx00abc"; //x00为NULL
echo strlen($str);  //7

参考:http://weizhifeng.net/php-binary-safe.html

php二进制安全的含义相关推荐

  1. Java二进制及中文转码和校验

    目录导读 Java二进制及中文转码和校验 1.Java基本数据类型 1.1 基本数据类型占用的存储空间 1.2 Java二进制流 1.3 二进制转换说明 1.3.1 二进制与Base64互转 1.3. ...

  2. 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  3. 浅谈Redis五种数据结构的底层原理

    概念 Redis作为一个开源的用C编写的非关系型数据库,基于优秀的CRUD效率,常用于软件系统的缓存,其本身提供了以下五种数据格式: string:字符串 list:列表 hash:散列表 set:无 ...

  4. 比特(bit)_二进制数

    二进制数位,也叫比特位,其实就是指位置,是指二进制数的位置.例如,0101 这是二进制数,而且是 4 位的二进制数,因为有 4 个位置,每个位置放一个二进制数,确切的说是每个位置放一个二进制的数码 0 ...

  5. php 按位左移,PHP位运算符

    PHP位运算符 位运算符的基本规则: 1:位运算符都是针对整数的二进制数字形式而进行的. 2:按位与运算基本规则: 规则表: 1&1 => 1 1&0 => 0 0& ...

  6. 求点赞、被点赞,社交网络用户对点赞又爱又恨

    作者|油醋 编辑|曹琨 刘钰敏 来源|人民数字与品玩联合出品 互联网社交产品"点赞"简史 人人活在社交媒体的互联网时代,还有人没有给别人点过赞吗? "点赞"或者 ...

  7. Keil C51教程

    第三课 C51数据类型 作者:    来源:本站原创    点击数: <script src="http://www.51hei.com/Article/GetHits.asp?ID= ...

  8. 3、Spark2x 基于内存的计算引擎

    Spark2x 基于内存的计算引擎 一.Spark 概述 Spark 是一种基于内存进行计算的分布式批处理引擎,他的主要工作是执行以下几种计算: (1) 数据处理,可以进行快速的数据计算工作,具备容错 ...

  9. 计算机存储和进制转换

    计算机的存储单位 ​ 计算机只能识别二进制数据,也就是0和1(0和1实际上对应的是高低电平,或者磁极方向等),对应0和1的最小存储单位是bit,bit是数据传输的最小单位.人们又规定特定位数的0和1组 ...

最新文章

  1. file.getinputstream(); 要关闭吗_iOS 13.5.1 和 12.4.7 已关闭,目前不能升级或降级
  2. 地贝扫地机器人维修_扫地机器人常见故障及维修方法
  3. Linux查看centos版本 - 命令篇
  4. day5 ---- 数据类型及常用方法(字符串、列表)
  5. 使用HBuilderX将H5网页打包成APP
  6. js 实现选择文件存放路径
  7. 数据字典的作用和定义(软件工程)
  8. 入职Apifox研发组三个月,我领悟了30个高效开发方法
  9. binlog回滚mysql误操作数据
  10. metamask 最新版官方版
  11. 大端模式与小端模式的详解分析
  12. 关于linux 僵尸进程
  13. OpenOffice在线预览文档
  14. OpenCV mat类实现水平投影和垂直投影
  15. 用Nginx禁止国外IP访问我的网站...
  16. SEOer必学的技能:好的软文首先就是做好标题党!
  17. 组织机构对象模型设计及实现
  18. 第7章--用户输入和while循环
  19. 获取屏幕大小 android,Android获取屏幕大小
  20. 如何面对黑天鹅与灰犀牛?ThoughtWorks技术雷达峰会给出答案

热门文章

  1. 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
  2. java校验码的设计_Java动态验证码单线设计的两种方法
  3. 【项目实战课】基于Pytorch的Pix2Pix黑白图片上色实战
  4. 【直播】深度卷积神经网络模型设计技术
  5. 全球及中国软磁镍合金行业供需前景与投资策略研究报告2022版
  6. 特征抽取--标签与索引的转化: IndexToString
  7. PyCharm-缩进 格式化代码
  8. bzoj 4921: [Lydsy六月月赛]互质序列
  9. [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
  10. Spark-1.6.0之Application运行信息记录器JobProgressListener