PHP

  • php logo
    PHP,  技术,  编程语言

    php 去除文件Bom头

    遇到文件处理,特别是excel文件处理时,经常会遇到bom头的问题,下面我们介绍下如何去除文件的Bom头。 代码 原理 实际应用的是sed命令: 这种方式,不需要将文件内容加载到内存里面,减少了内存的消耗以及大文件可能造成的内存超限问题。

  • php logo
    PHP,  技术,  编程语言

    判断字符串是否为base64

    业务场景中,有时我们需要判断一个字符串是否为base64来决定是否需要进行base64解码。 实际上,并没有什么非常完美的方法能够完全判断一个字符串是否为base64, 都存在一定的误差。 解决方案1 最佳的解决方案,就是从产品层面进行解决,明确规定该字符串必须是base64或非base64, 这样我们就能够清楚的知道是否需要进行base64解码 解决方案2 如果产品层面不好动,或者已经存在混淆不清的数据的话,那就只能尽可能的进行判断,通过下面的方法能够准确判断出绝大部分的字符串 解决方案2-扩展 如果你的业务场景,能够确定某一批数据格式是一致的,也就是都是base64或都是非base64, 那就可以应用方案2的代码,判断一部分数据,如果判断的结果,大部分都是base64格式的,那该批数据应该就都是base64格式的,否则相反,这样精确度会更高一些

  • php logo
    PHP,  技术,  编程语言

    ip地址校验-php

    校验ip地址的合法性,无需自己运用正则进行判断,php有专门的函数进行校验。 判断是否是合法IP 判断是否是合法的IPv4 IP地址 断是否是合法的公共IPv4地址,192.168.1.1这类的私有IP地址将会排除在外 判断是否是合法的IPv6地址 判断是否是public IPv4 IP或者是合法的Public IPv6 IP地址

  • php logo
    PHP,  技术,  编程语言

    csv解读bom头问题

    csv文件时业务场景中经常用到的,今天业务场景遇到了csv的bom头引发的一个问题。 问题 从csv文件读取数据,写入mysql,下面是库里看起来完全正常的一条数据 问题来了,当将内容取出,explode拆分后 intval($part[0]) 竟然等于 0 ??? 排查 既然这样,那么肯定,$part[0] 不完全等于 我们所表面看到的 ‘2000117008’ json_encode($part[0])看一下: 真相出来了,实际隐藏了一些字节, 而这些恰好就是bom头 解决 获取csv内容后,先取出bom头,在取数据插入数据库

  • php logo
    PHP,  技术,  编程语言

    php正则替换preg_replace_callback

    preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。 语法 这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。 参数说明: $pattern: 要搜索的模式,可以使字符串或一个字符串数组。 $callback: 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。 $subject: 要搜索替换的目标字符串或字符串数组。 $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。 $count: 可选,为替换执行的次数。 返回值 如果subject是一个数组, preg_replace_callback()返回一个数组,其他情况返回字符串。 错误发生时返回 NULL。 如果查找到了匹配,返回替换后的目标字符串(或字符串数组), 其他情况subject 将会无变化返回。 举例: