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. wordpress使用的插件记录
  2. eclipse创建java web项目
  3. Python os.path模块的使用
  4. 使用MyEclipse构建MAVEN项目 - 我的漫漫程序之旅 - BlogJava
  5. npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
  6. 把百度网站设为首页_网站百度推广效果好不好?怎样才能把网站推广到百度首页?...
  7. hdu5751 Eades
  8. oracle怎么按时间查找,JDBC:我如何在Oracle中按时间查询?
  9. ubuntu一键安装LAMP 及一键卸载
  10. 深度学习中降低过拟合(OverFitting)的方法
  11. 图解:知识竞赛现场管理系统-PPT双屏版,展示题目时,试题内容提前预审修改及监控图片的产生使用等
  12. 蓝桥杯 C语言 试题 历届试题 格子刷油漆
  13. C++ SHFileOperation实现文件、文件夹拷贝、删除、重命名
  14. java 石头剪刀布_java循环练习:石头剪刀布
  15. 计算机利用公式计算实发工资怎么弄,如何在excel 表中 添加税收计算程序?excle中计算税收的公式...
  16. 临近算法knn(k-nearest neighbor)的计算
  17. 借鉴一些关于js框架的东西
  18. 11.9-11.13宁阳东平五日
  19. 安卓系统培训!系统盘点Android开发者必须掌握的知识点,BAT大厂面试总结
  20. 五险一金是包括什么?

热门文章

  1. 正则化方法:数据增强、regularization、dropout
  2. 【视频课】一课掌握模型设计核心理论与实战技巧
  3. 【杂谈】有三AI不得不看的技术综述(超过100篇核心干货)
  4. 【知识图谱】知识表示:知识图谱如何表示结构化的知识?
  5. 【技术综述】深度学习中的数据增强方法都有哪些?
  6. 全球及中国生物降解塑料行业应用需求前景及竞争态势研究报告2021版
  7. Bootstrap 第一篇
  8. ABAP 通过sumbit调用另外一个程序使用job形式执行-简单例子
  9. LightOJ 1259 Goldbach`s Conjecture 素数打表
  10. 子元素的margin-top影响父元素原因和解决办法