这几天一直被一个诡异的问题困扰。
我写了个非常简单的sql,循环执行,结果各异。。。唯一区别就是其中的一个条件while hostname like '$host%';
就是这条简单的语句,害死哥了!为啥,因为这个$host字符串里面,居然还有普通模式看不出的控制字符!! ^F这个控制字符。。。这个玩意害我debug了2天!!
既然发现了问题的根源,就可以开始想办法解决了。
首先我考虑的是那些perl的控制字符,但是遍历很久,都没有发现比较合适的,比如\s,\w之类的,都不满足,后来google搜的时候,发现了这个替换方法:直接通过ASCII的编码进行约束,比如这样:
s/[^\040-\176]//g;
直接将字符串中 ASCII编码不是40--176的字符串删除。。。非常便捷!
各位可以根据需要约定字符串的范围,不管你们用没用,反正我用了之后,上面的特殊控制字符"^F"就彻底滚蛋了!!爽!
阅读(3291) | 评论(1) | 转发(0) |