php知识点学习整理

PHPer 2020-04-22 1476 0 0

这里记录php知识点学习整理 20200422...

立即注册

更新于:2020-04-22 01:28:58
    您需要登录后才可以评论。 立即注册

    PHP的源代码BUG整理

    trim()函数的bug

    如果用trim($str,'。');

    用句号最为两端消除符,str为中文等3字节的特定字符,返回的结果会乱码,例如

    $str="倩女幽魂";
    $str=trim($str,'。');
    var_dump($str);die;
    //输出结果为
    string(11) "倩女幽�"
    

    可以看到,字符串长度11,有1个长度被截取掉了,所以是乱码 ...

    立即注册
    更新于:2022-05-01 12:13:02

    PHP 中英文混排截取字符串 (用php自带的函数,简单效果又好)

    在网上找了几种代码,测试了,这个是最好的,还是官方的函数mb_strwidth()和mb_strimwidth()厉害,O(∩_∩)O

    最后找到了笔记合适的

    我自己用php内置函数写了字符串截取函数

    //根据PHP内置函数写的截取字符串函数 20220423
    if ( ! function_exists('mb_str_cut')){
        function mb_str_cut($str,$length=20,$tailTag='...') {
            if(mb_strwidth($str, 'utf8')>$length){
                $str = mb_strimwidth($str, 0, $length, $tailTag, 'utf8');
            }
            return $str;
        }
    }

    O(∩_∩)O,20220423,下面是我参考的内容


    转~~~~~由于网上版本太多,不知道谁是原版,so~不标地址了

    mb_strwidth($str, $encoding) 返回字符串的宽度

    $str 要计算的字符串

    $encoding 要使用的编码,如 utf8、gbk

    mb_strimwidth($str, $start, $width, $tail, $encoding) 按宽度截取字符串

    $str 要截取的字符串

    $start 从哪个位置开始截取,默认是0

    $width 要截取的宽度

    $tail 追加到截取字符串后边的字符串,常用的是 ...

    $encoding 要使用的编码

    下边给大家实例演示:

    <?php
    /**
     * utf8 编码格式
     * 1个中文占用3个字节
     * 我们希望的是1个中文占用2个字节,
     * 因为从宽度上看2个英文字母占用的位置相当于1个中文
     */
    // 测试字符串
    $str = 'aaaa啊啊aaaa啊啊啊aaa';
    echo strlen($str); // 只用strlen输出为25个字节
    // 必须指定编码,不然会使用php的内码 mb_internal_encoding()可以查看内码
    // 使用mb_strwidth输出字符串的宽度为20使用utf8编码
    echo mb_strwidth($str, 'utf8'); 
    // 只有宽度大于10才截取
    if(mb_strwidth($str, 'utf8')>10){
        // 此处设定从0开始截取,取10个追加...,使用utf8编码
        // 注意追加的...也会被计算到长度之内
        $str = mb_strimwidth($str, 0, 10, '...', 'utf8');
    }
    // 最后输出 aaaa啊... 4个a算4个 1个啊算2个 3个点算3个 4+2+3=9
    // 是不是很简单啊,有的人说了为什么是9个不是10个吗?
    // 因为正好“啊”的后边还是“啊”,中文算2个,9+2=11 超出了设定,所以去掉1个就是9了
    

    下边再给大家介绍一些其它函数吧: ...

    立即注册
    更新于:2022-04-23 02:23:36

    php如何查看扩展是否开启

    用php -m命令查看PHP开启了那些扩展。php -m 在哪里运行? 在命令行窗口,windows在cmd里,Linux直接在命令行运行 不过如果没有配置php的路径的话,可以直接切换到php版本包含php.exe的目录下运行。

    一、总结

    一句话总结:php -m

    1、查看php已安装扩展命令 ?

    php -m

    2、phpinfo();这是最常用的方法,但那么多扩展一时还真不太好找。?

    533f3f93a6_normal.png

    3、extension_loaded()方法把想要知道是否开启的扩展传进去,他会返回布尔类型的值;?

    de6ca5226f_normal.pnga3faf79e2c_normal.png

    4、当然我们也可以通过判断扩展库下的方法是否存在,来判断库是否已经被加载这时我们要用到function_exists()方法来判断;?

    7a491198be_normal.png5151792e96_normal.png

    5、最后当然是直接调用函数,看看可以执行不;这里用gd_info()作为 测试?

    64762f9691_normal.png

    6、结尾教大家一个获取一个库下所有函数的方法get_defined_functions()?

    4b4cef222e_normal.png

    7、php快速查看扩展的版本信息?

    命令为:

    php --ri 扩展名。

    例如:

    php --ri memcached

    结果如下:

    php --ri memcached

    memcached

    memcached support => enabled

    Version => 2.2.0

    ...(这里是省略的n多的版本信息文字)

    8、比如查看php已安装扩展命令的语句:php -m 在哪里运行?

    在windows命令行窗口,这是windows命令

    不过如果没有配置php的路径的话,可以直接切换到php版本包含php.exe的目录下运行:

    比如:D:\software\code\phpStudy2018\PHPTutorial\php\php-5.6.27-nts>php -m

    f8485e0d49_normal.png

    9、PHP开启PDO和PDO_MySQL扩展的方法?

    PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。 ...

    立即注册
    更新于:2022-05-22 18:09:18

    PHP preg_quote() 函数

    https://www.runoob.com/php/php-preg_quote.html

    语法

    string preg_quote ( string $str [, string $delimiter = NULL ] )
    

    preg_quote() 需要参数 str 并向其中 每个正则表达式语法中的字符前增加一个反斜线。 这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候。

    正则表达式特殊字符有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

    参数说明:

    • $str: 输入字符串。
    • $delimiter: 如果指定了可选参数 delimiter,它也会被转义。这通常用于 转义 PCRE 函数使用的分隔符。 / 是最通用的分隔符。

    返回值

    返回转义后的字符串。

    实例

    实例 1

    <?php $keywords = '$40 for a g3/400'; $keywords = preg_quote($keywords, '/'); echo $keywords; ?>

    执行结果转义了 $ 和 / 特殊字符,如下所示:

    返回 \$40 for a g3\/400
    

    将文本中的单词替换为斜体

    <?php //在这个例子中,preg_quote($word) 用于保持星号原文涵义,使其不使用正则表达式中的特殊语义。 $textbody = "This book is *very* difficult to find."; $word = "*very*"; $textbody = preg_replace ("/" . preg_quote($word) . "/", "<i>" . $word . "</i>", $textbody); echo $textbody; ?> ...

    立即注册
    更新于:2020-04-22 01:34:11

    PHP str_ireplace() 函数

    https://www.feiniaomy.com/post/378.html

    str_ireplace():查找与替换字符串中的指定内容,不区分大小写

    语法:

    str_ireplace(find,replace,string,count)
    复制

    参数:

    find:必需。规定要查找的值。

    replace:必需。规定替换 find 中的值的值。

    string:必需。规定被搜索的字符串。

    count:可选。一个变量,对替换数进行计数。

    例:PHP查找并替换字符串中的指定字符

    示例代码:

    <?php
    $str = 'hello word!';
    echo str_ireplace('hello','hi',$str);
    ?>
    复制

    输出结果:

    hi word!
    复制

    例:PHP不区分大小写查换并替换字符串中的批定字符

    示例代码:

    <?php
    //声明页面编码方式,不然中文乱码
    //飞鸟慕鱼博客
    header("Content-type: text/html; charset=utf-8");
    $str = '我的博客网站是:FEINIAOMY.COM';
    echo str_ireplace('FEINIAOMY.COM','feiniaomy.com',$str);
    ?>
    复制

    输出结果:

    我的博客网站是:feiniaomy.com
    复制

    例:PHP查找替换数组中的元素,并输出替换的数量

    示例代码:...

    立即注册
    分享的网址网站均收集自搜索引擎以及互联网,非查问网运营,查问网并没有提供其服务,请勿利用其做侵权以及违规行为。
    更新于:2020-04-22 01:35:57

    查看php位置

    1.可以利用find / -name php.ini 查找一下,系统是否有php的配置文件

    2.利用netstat -ntpl 查看9000端口是否在运行
    3.如果9000端口存在,可以使用lsof -i:9000查看文件位置

    4.另外,如果系统已经安装了php,你还可以用php -v 查看版本号,前提是设置环境变量!...

    立即注册
    更新于:2021-12-14 07:59:59

    php7.4 查看版本

    这里要注意下,命令和之前的版本不同

    php74 -v ,

    [root@10-7-188-37 ~]# php74 -v
    PHP 7.4.26 (cli) (built: Nov 16 2021 15:31:30) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies

    如果输入php -v,会提示没有该命令:-bash: php: command not found...

    立即注册
    更新于:2021-12-14 08:01:33

    PHP提示 cURL error 60: SSL certificate problem: unable to get local issuer certificate

    下载cacert.pem,并放在php对应目录文件夹下

    php5.6以上的版本会出现这种问题

    解决办法:

    访问https://curl.haxx.se/docs/caextract.html,下载cacert.pem,在php.ini文件添加...

    立即注册
    更新于:2021-12-24 22:18:15

    php过滤表单输入的emoji表情

    1.过滤emoji表情的原因

      在我们的项目开发中,emoji表情是个麻烦的东西,即使我们可以能存储,也不一定能完美显示,因为它的更新速度很快:在iOS以外的平台上,例如PC或者android。如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行。即便如此,还是可能因为emoji图片不够全而出现无法显示的情况
    在大多数业务场景下,emoji也不是非要不可的。我们可以适当地考虑干掉它,节约各种成本。

    2.php过滤emoji原理

      Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行。自苹果公司发布的iOS5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。近期,更是有不少网友用emoji图案玩猜字游戏,享受这种表情文化带来的乐趣。

    关于emoji的发音:很多人第一眼见到emoji便会下意识将其误读作“一磨叽”,其实不然,emoji音译过来大概读作“诶磨叽”,当中“e”的发音颇似字母abc的a的发音。

    最初日本的三大电信运营商各自有不同的字符定义,分别是DoCoMo、KDDI和Softbank。随着iOS内置了Softbank的版本,emoji在全球范围内风靡(iOS5版本以前)。而Google又自己定义了一套emoji字符。iOS5以后,apple采用了unicode定义的emoji字符(iOS5版本以后)。

    unicode定义的emoji是四个字符,softbank为3个字符,emoji的四个字符从存储到展示对应没有做过考虑的系统来说,简直就是灾难。

    3.针对unicode定义的emoji表情过滤

      ①.unicode定义的emoji是四个字符,根据这个原理进行过滤...

    立即注册
    更新于:2021-12-25 12:30:02

    linux下安装php的Exif扩展笔记!(用LNMP一键安装脚本安装的php)

    没安装Exif扩展,这个PHP安装不支持读取Exif数据。
     Intervention \ Image \ Exception \ NotSupportedException
    Reading Exif data is not supported by this PHP installation.

    39a68d352c_normal.png

    宝塔上直接安装很方便

    1e034c882c_normal.png

    linux安装Exif扩展

    #查看已安装的扩展:
    /usr/local/php/bin/php -m
    #修改php配置文件,注释掉disable_functions nano /usr/local/php/etc/php.ini
    安装exif扩展,进入lnmp一键安装包解压目录,解压php,进入exif目录
    cd /home/lnmp1.6/src
    tar -xjf php-7.2.22.tar.bz2
    cd php-7.2.22/ext/exif/
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    make test

    nano /usr/local/php/etc/php.ini #编辑php.ini底部追加extension = exif.so #或者是去掉注释 extension=mbstring和extension=exif
    /etc/init.d/php-fpm restart #重启php
    /usr/local/php/bin/php -m #查看扩展是否安装成功

    7fed4ed531_normal.png ...

    立即注册
    更新于:2022-06-17 06:32:34

    configure: error: Cannot find ldap.h 解决方法

    在用wordpress时需要开启ldap,在安装php-ldap时遇见了configure: error: Cannot find ldap.h

    这个报错,百度了你知道的都是一个答案,尝试了不好使。

    终于在必应上看到了另一种解决方式 apt-get install libldap2-dev

    然后就ok了。记录一下吧。...

    立即注册
    更新于:2022-06-17 06:41:24

    一个PHP针对数字的加密解密类

    <?php
    namespace app;
    /**
    * 加密解密类
    * 该算法仅支持加密数字。比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密。
    * @author 深秋的竹子
    * @version alpha
    * @加密原则 标记长度 + 补位 + 数字替换
    * @加密步骤:
    * 将a-z,A-Z,0-9 62个字符打乱,取前M(数字最大的位数)位作为 标记长度字符串,取第M+1 到第M+10位为数字替换字符串,剩余的为补位字符串
    * 1.计算数字长度n,取乱码的第n位作为标记长度。
    * 2.计算补位的长度,加密串的长度N -1 - n 为补位的长度。根据指定的算法得到补位字符串。
    * 3.根据数字替换字符串替换数字,得到数字加密字符串。
    * 标记长度字符 + 补位字符串 + 数字加密字符串 = 加密串
    * Usage:
    * $obj = new XDeode(9);
    * $e_txt = $obj->encode(123);
    * echo $e_txt.<br/>;
    * echo $obj->decode($e_txt);
    */
    class XDeode{
    private $strbase = "Flpvf70CsakVjqgeWUPXQxSyJizmNH6B1u3b8cAEKwTd54nRtZOMDhoG2YLrI";
    private $key,$length,$codelen,$codenums,$codeext;

    // 初始化
    function __construct($length = 9,$key = 2543.5415412812){
    $this->key = $key;
    $this->length = $length;
    $this->codelen = substr($this->strbase,0,$this->length);
    $this->codenums = substr($this->strbase,$this->length,10);
    $this->codeext = substr($this->strbase,$this->length + 10);
    }

    // 编码
    function encode($nums){
    $rtn = "";
    $numslen = strlen($nums);
    //密文第一位标记数字的长度
    $begin = substr($this->codelen,$numslen - 1,1);
    //密文的扩展位
    $extlen = $this->length - $numslen - 1;
    $temp = str_replace(., , $nums / $this->key);
    $temp = substr($temp,-$extlen);
    $arrextTemp = str_split($this->codeext);
    $arrext = str_split($temp);
    foreach ($arrext as $v) {
    $rtn .= $arrextTemp[$v];
    }
    $arrnumsTemp = str_split($this->codenums);
    $arrnums = str_split($nums);
    foreach ($arrnums as $v) {
    $rtn .= $arrnumsTemp[$v];
    }
    return $begin.$rtn;
    }
    //解码
    function decode($code){
    $begin = substr($code,0,1);
    $rtn = ;
    $len = strpos($this->codelen,$begin);
    if($len!== false){
    $len++;
    $arrnums = str_split(substr($code,-$len));
    foreach ($arrnums as $v) {
    $rtn .= strpos($this->codenums,$v);
    }
    }

    return $rtn;
    }
    }

    ?>

    一个PHP针对数字的加密解密类,该类仅支持加密数字。比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密,需要的朋友可以参考下:...

    立即注册
    更新于:2022-06-21 10:30:19
    相关内容

    Mysql知识学习

    MySQL 8.0 索引特性1-函数索引

    MySQL字符串函数substring:字符串截取

    Mysql的临时变量取值3例

    mysql查找字符串出现位置

    mysql 更改AUTO_INCREMENT 失败的解决办法

    MYSQL 数据库导入导出命令

    mysql如何判断不包含某个字符串

    Mysql中不要用操作符和函数名等等来命名字段

    CSS3知识整理

    transition属性-CSS3知识整理

    Bootstrap-排版

    Bootstrap-响应式工具

    CSS3的rem详解及使用方法 - CSS3知识整理

    phpmyadmin问题整理

    phpmyadmin解决Failed to set session cookie. Maybe you are using HTTP...

    phpmyadmin 登录报错 mysqli_real_connect(): (HY000/2002):

    PhpMyAdmin 配置文件现在需要一个短语密码的解决方法

    PHP的兼容性问题整理

    Trying to access array offset on value of type null(PHP的版本兼容问题)

    推荐内容

    分享几个好用的bt搜索bt资源下载网址网站

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享

    全网最新bt磁力搜索引擎bt资源bt网站网址分享

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作