2021年3月

<?php
    $str = '哈hhee12_!@#$%^&*';
    // 分割字符串
    // 暂时还不知道这两种有什么区别
    $result = preg_split('/(?<!^)(?!$)/u', $str);
    $result1 = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);

(?<!expr)(?!expr)都是零宽断言,前者表示此位置之前不匹配expr,后者表示此位置之后不匹配expr。
在正则中^和$单独用表示开头和末尾。
也就是说(?<!^)表示此位置之前不匹配开头,(?!$)表示此位置之后不匹配末尾。
所以这个split匹配到的部分,为每两个字的中间位置(但是没有匹配到任何实际的字符)。

转载自:https://segmentfault.com/q/1010000008476491