建设银行etc官方网站/百度竞价推广出价技巧

建设银行etc官方网站,百度竞价推广出价技巧,开发网站怎么挣钱,a5站长网网友ainiaa的问题是PHP代码如下代码如下:$words "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!#$%^&*()_-[]\\,./{}|<>?\"你好啊我们";$otherStrpreg_replace("/[chr(128)-chr(256)]/is"," ",$words);ech…

网友ainiaa的问题是

PHP代码如下

代码如下:$words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!@#$%^&*()_+-=[]\\,./{}|<>?'\"你好啊我们";

$otherStr=preg_replace("/[chr(128)-chr(256)]+/is"," ",$words);

echo 'otherStr:',$otherStr;

为什么打印的结果会是:

otherStr: ! #$% & {}| ‘”你好啊我们

麻烦问下其中正则表达式 /[chr(128)-chr(256)]+/is 代表什么意思?

如果/[chr(128)-chr(256)]+/is 指的是ascii码在128到256的字符,为什么a-zA-Z这样的字符也被替换掉了,他们的ascii码是小于127的。

最令人郁闷的是为什么ascii码同在0-127区间”#”,”$”,”%”,”&”, “!”,” {“,”}”,”|”,” ‘”,”确没有被替换掉????

更令人感觉神奇的是 如果把正则表达式修改为”/[chr(128)-chr(256)]+/s”的话,输出的结果就变成了: otherStr: defg ijklmnopq stuvwxyz ! #$% & {}| ‘”你好啊我们

只是把正则表达式中的符号‘i'给去掉,结果缺失这样的。 完全的令我理解不了。

不知各位 有何见解????

另附ascii 码 对照表

(这个ASCII码表的图我就不贴了)

回帖中,有个网友说没解析chr(128)这些,并给出了新的解决方法。首先说下此网友回答的是正确的,先不评论他是否“知其然,且知其所以然”,这位网友没有给出错误的原因。

CFC4N来回答一下这位网友:

PHP的正则的preg_match函数用的是PCRE正则引擎,这位网友的代码中,PCRE引擎处理的正则表达式为【/[chr(128)-chr(256)]+/is】,后面的is是什么呢?

在PHP的正则里,边界字符后面的叫模式修饰符。它会告诉引擎如何解析,处理正则。其中i修饰符表示不区分大小写。s表示“点号通配模式”,用来让正则里的元字符点号【.】可以匹配换行符,这个修饰符仅对点号【.】起作用。在这位网友的问题中,修饰符s并不起作用的。

查找原因:

我们在来分析一下这个网友写的正则表达式【[chr(128)-chr(256)]+】,正则表达式的PCRE引擎是如何解释这个正则的呢?首先,我们要知道,在正则表达式中,中括号【[]】表示字符组,字符组中除了连接符【-】只外,都不是元字符,也就是说,都是普通字符,当然,如果连字符出现在第一个,或者不是标识两个字符之间范围的,都是普通的字符横杠“-”罢了。这里的chr(128)只是标识ASCII码为128(确切的说,ASCII码只是0-127个,128到其他的,应该不叫ASCII码了。),但是在正则里,他仍然代表【c、h、r、(、1、2、8、)】(顿号不是,只是区分易读的)这八个字符罢了。这个正则里的连接字符,是哪些范围呢?很明显,这里的连接字符的范围是【)-c】,“)”ASCII码为0×29,也就是十进制的41;“c”的ASCII码为0×63,也就是十进制的99,那么,他这个连接字符的范围就是ASCII 41(chr(41))到ASCII 99(chr(99))之间的字符。也就是说,这位网友的正则的范围是【[hr)-c(]】,就是chr(41)到chr(99)外加hr这两个字母和前面的“(”。

网友第一次测试的时候,有修饰符i,意思就是说,不区分大小写,那么在chr(41)到chr(99)之间的字符,以及这些字符如果有大小写,则包括他们的大小写都符合匹配。都会被替换成空。其第二次测试的时候,去掉了修饰符i,进行了不区分大小写的匹配,由于其范围只到c,但突然,再除了小写字母的“h”、“r”,所以,测试结果会多出“defgijklmnopqstuvwxyz”。所以,他的结果出现了这些差别。

c5a42baaba92f43106e2dd2526e78c7c.png

网友的表达式等同于如下图所示

019a0bfb4bf3d5ca7e7407c5ad4688df.png

解决办法:

错误的原因找出来了,那么,解决的办法呢?

我们先来看看这位网友的需求,他的需求是将unicode(ASCII只是0-127位的,128之后的,应该叫UNICODE码)的chr(128)到chr(255)之间的字符匹配,替换为空罢了。正则表达式里,对十六进制的字符匹配的表示方式有两种,【\u】和【\x{}】,前者只能表示【\u】后面4位的十六进制数值,而后者【\x{}】则可以表示任意多的十六进制位数(写在大括号中)。

那么,这个正则表达式该如何写????

网友的目的是chr(128)到chr(255),那么就是【[\u0080-\u00FF]】或者【[\x{0080}-\x{00FF}]】。

其目的是匹配下图中的红框内字符

477531df9deba5762335cc1014113dff.png

提醒一下,PHP里正则匹配unicode字符时,需要使用u修饰符。

根据网友需求,更改正则之后的PHP代码如下:

代码如下:$words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!@#$%^&*()_+-=[]\\,./{}|<>?'\"你好啊我们";

$otherStr=preg_replace("//[\x{0080}-\x{00FF}]+/iu"," ",$words);

echo 'otherStr:',$otherStr;

其运行结果是仍然输出那段字符串,为什么呢?因为哪些字符串都不在chr(128)到chr(255)的范围之内。

(测试时,注意文件编码为UTF-8)

以上为鄙人愚见,欢迎批评指正。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iis7怎么安装php7,Linux下如何安装php7

Linux下安装php7的方法&#xff1a;首先安装依赖包&#xff0c;并下载解压安装包&#xff1b;然后检查环境的依赖关系&#xff0c;并编译安装&#xff1b;接着将【php.ini-production】改名为【php.ini】&#xff1b;最后复制启动脚本&#xff0c;并启动PHP即可。Linux下安装ph…

flux react php,Vue的Flux框架之Vuex状态管理器

学习vue之前&#xff0c;最重要是弄懂两个概念&#xff0c;一是“what”&#xff0c;要理解vuex是什么&#xff1b;二是“why”,要清楚为什么要用vuex。Vuex是什么&#xff1f;Vuex 类似 React 里面的 Redux 的状态管理器&#xff0c;用来管理Vue的所有组件状态。为什么使用Vue…

php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程

php中静态类与静态变量用法的区别分析static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了.1. 创建对象$object new Class()&#xff0c;然后使用”->”调用&#xff1a;$object->attribute/function&…

matlab声音信号时域频域转换,关于处理用采集卡采集到的声音时域信号转化成频域信号........

求助各位大神&#xff0c;我用麦克风通过采集卡采集到了一段声音数据&#xff0c;数据在附件里&#xff0c;矩阵中第一列为时间&#xff0c;第二列为采集到的声音的电压信号&#xff0c;采样频率为1万Hz&#xff0c;做出时域图和频域图的程序如下所示&#xff1a;clear;clc;loa…

win7和mysql乱码,windows本地mysql数据库存入中文乱码

windows本地mysql数据库存入中文乱码作者:PHPYuan 时间:2018-07-23 03:41:20出现的问题&#xff1a; 我这页面存中文到数据库会乱码 我打了断点 中文是传到后台dao层的 然后我试了下 把我本地项目连服务器数据库 保存不会乱码 我就怀疑是本地数据库有问题 然后我用navicat写了个…

oracle 600 侯,oracle在导入数据时报600错误的解决方法

前言前几天导入一个大容量dmp数据文件&#xff0c;报一个600错误&#xff0c;咨询网上的解决方法&#xff0c;按上面的处理一圈也没有整好&#xff0c;最后咨询组里一个大神&#xff0c;出现此错误 思路是&#xff0c;单个数据文件大小最大为32G&#xff0c;分析数据库后解决如…

Oracle插数据timeout,oracle 11g 频繁报kmgs_parameter_update_timeout

各位 好&#xff01;我的数据库RAC 11g 最近频繁报错&#xff0c;数据库版本是11.2.0.1.0 详细错误信息如下&#xff1a;Errors in file /u01/app/oracle/diag/rdbms/glddb/glddb1/trace/glddb1_mmon_27429.trc (incident123874):ORA-00600: internal error code, arguments: …

linux touch更新文件时间,Linux文件时间的查看和修改touch

1. Linux文件的时间Linux下文件时间主要有下面三种&#xff1a;1.1 modification time(mtime)文件修改时间&#xff0c;即文件内容的修改时&#xff0c;更新这个时间&#xff0c;不包括文件权限和属性的修改。使用ls -l查看&#xff0c;默认显示时间为mtime$ ls -l uconv.h-rw-…

linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp

1、ftp通过root或其他用户进入可视化界面权限过大&#xff0c;容易导致系统文件误删windows下输入ftp://IP去访问&#xff0c;不需要账号密码就可以访问到ftp文件夹刚进去pub是空的&#xff0c;在linux上新增一个txt文件&#xff0c;再去windows下刷新可以看到txt文件&#xff…

mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...

Mats显存检测软件是一款专业的显卡检测工具&#xff0c;全系统都是中文的&#xff0c;是一款装机必备的硬件工具&#xff0c;帮助你了解自己的显卡运作情况&#xff0c;有任何问题都可以第一时间暂停&#xff0c;看完的小伙伴可以关注微侠网下载最新版软件以及查看最新攻略及资…

c语言编程函数补充上机题,2011年计算机二级C语言上机操作题及答案(10)

/********found********/void fun(char *s, *t1, *t2, *w){int i;char *p, *r, *a;strcpy(w, s);while (*w){p w;r t1;/********found********/while (r)if (*r *p){r;p;}else{break;}if (*r ’\0’){a w;r t2;while (*r){*a *r;a;r;}w strlen(t2);}else{w;}}}main(…

c语言 手机图形库,c语言的图形库 - osc_opiar5rp的个人空间 - OSCHINA - 中文开源技术交流社区...

图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h同样在里面下载图形库帮助文档进行查询vs vc都可使用图形库图形库窗口&#xff1a;initgraph打开窗口closegraph关闭窗口颜色RGB值 RGB(,,)&#xff1a;red green blue 下表值都可以在函数中直接使用填充颜…

android 自动挂断,[转]android 来电自动接听和自动挂断

注意&#xff1a;android2.3版本不支持下面的自动接听方法。(会抛异常&#xff1a;java.lang.SecurityException:Neither user xxxxx nor current process hasandroid.permission.MODIFY_PHONE_STATE.)第一步&#xff1a;准备应用环境需要的系统包和aidl文件。(1)在应用中创建包…

Android实现mp3分析,Android编程实现播放MP3功能示例

本文实例讲述了Android编程实现播放MP3功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在android中播放mp3非常简单&#xff0c;也是项目中经常使用的&#xff0c;比如说要做项目的背景音乐&#xff0c;应用中某些功能的提示音等的。应用非常广泛,下面提供一个简单…

android 投票功能,腾讯新闻Android客户端更新 加入投票功能

腾讯近日更新了其应用《腾讯新闻》安卓版&#xff0c;加入了新闻专题&#xff0c;投票两大新功能&#xff0c;同事还优化了用户界面&#xff0c;大家在浏览各类新闻方面又有了新的选择。新版特点&#xff1a;1、新闻专题&#xff1a;热门新闻专题呈现&#xff0c;聚合浏览&…

android8.1自定义通知栏,Android 8.1隐藏状态栏图标的实例代码

近期客户需求&#xff0c;状态栏只显示时间和电池图标&#xff0c;如图状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知&#xff0c;定位&#xff0c;蓝牙&#xff0c;信号&#xff0c;时间&#xff0c;电池等图标&#xff0…

广州城市地图为android,广州无障碍地图

广州无障碍地图是一款非常不错的手机导航app&#xff0c;专门为老人与残障人士打造的哦。该app将准确的为残障用户规划出一条没有任何障碍的出行路线&#xff0c;并且该软件拥有语音、文字等不同的播报方式。特色说明1、智能化的手机导航的系统&#xff0c;语音识别2、最为准确…

华为副总鸿蒙,“哄蒙”败北!华为副总裁落实最新消息,鸿蒙3月31日正式亮剑...

原标题&#xff1a;“哄蒙”败北&#xff01;华为副总裁落实最新消息&#xff0c;鸿蒙3月31日正式亮剑不得不说&#xff0c;最近的华为生态建设又取得了重大的突破。在2020年不到一年的时间里&#xff0c;华为HMS生态注册开发者的数量就已经快要突破200万了&#xff0c;如此庞大…

html淡化效果,jQuery实现基本淡入淡出效果的方法详解

本文实例讲述了jQuery实现基本淡入淡出效果的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;jQuery fadeIn()方法&#xff1a;用于淡入已隐藏的元素jQuery fadeOut()方法&#xff1a;用于淡出可见的元素$(document).ready(function(){$("button").clic…

html 类型转换,JavaScript怎么进行类型转换?

JavaScript怎么进行类型转换&#xff1f;下面本篇文章就来介绍一下使用javascript进行类型转换的方法&#xff0c;希望对大家有所帮助。JavaScript 变量可以转换为新变量或其他数据类型&#xff0c;分为两种情况&#xff1a;● 隐性转换&#xff1a;通过 JavaScript 自身自动转…