首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP中正则使用

正则表达式,作为一种快速、便捷处理字符串工具,在各种编程语言中都有着广泛用途,通过在PHP一些使用,下面记录一下关于PHP中正则使用一些技巧。.../   匹配头为is字符串   /is\b/   匹配尾为is字符串   /\bis\b/ 定界 \B       匹配单词边界之外任意字符   /\Bis/   匹配单词“This”中“is...匹配英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_] \s     匹配一个空白字符;等价于[\f\t\v] \S     匹配空白字符以外任何一个字符;等价于[^\f\t\...PCRE正则表达式函数: preg_match()和preg_match_all() preg_quote() preg_split() preg_grep() preg_replace() 函数具体使用...=\"\s)/e', 'add_url(\$url, \'\\1\')', $form_html ); 最后,正则工具虽然强大,但是从效率和编写时间上来讲,有的时候可能没有explode来更直接,对于一些紧急或者要求不高任务

3.7K30

小时到分钟 - 一步步优化巨量关键词匹配

正则小坑 这里介绍两个使用中遇到小坑: 正则模式长度太长导致匹配失败: PHP 正则有回溯限制,以防止消耗掉所有的进程可用堆栈, 最终导致 php 崩溃。...分词也是需要时间,而且我关键词都是些无语义词,构建词库、使用分词工具又是很大问题,最终我想到 拆词。 为什么叫拆词呢,我考虑以蛮力将一句话拆分所有可能词。...$) 是分别用来限定捕获组不是第一个,也不是最后一个(不使用这两个捕获组限定符也是可以,直接使用//作为模式会导致拆分结果在前后各多出一个空字符串项)。...设计 那么 trie 树怎么实现关键字匹配呢? 这里以一幅图来讲解 trie 树匹配过程。 ? 其中要点: 构造trie树 将关键词用上面介绍preg_split()函数拆分为单个字符。...如此遍历,直到最后,返回所有匹配结果。 代码 完整代码我已经放到了GitHub上:Trie-GitHub-zhenbianshu,这里放上核心。

1.7K60
您找到你想要的搜索结果了吗?
是的
没有找到

PHP正则表达式笔记与实例详解

表示任意一个换行符之外字符                 常用组合: .*? ...表示最小匹配所有字符(拒绝贪婪匹配) d 匹配一个数字;等价于[0-9] D 匹配除数字以外任何一个字符;等价于 w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_] W 匹配英文字母...、数字和下划线以外任何一个字符;等价于 s 匹配一个空白字符;等价于[fnrtv] S 匹配空白字符以外任何一个字符;等价于 f 匹配一个换页符等价于 x0c 或 cL n 匹配一个换行符;等价于...和下面的一样,不同是匹配到最后(全局匹配)     * preg_match -- 进行正则表达式匹配,只匹配一次,返回1,否则0,         格式:preg_match("正则表达式","被匹配字串...($a[0]); //匹配字串所有ab或cd //preg_match_all("/is/","qweisrqwerisasfd",$a); //var_dump($a); //匹配字串所有is //preg_match

1K00

PHP正则表达式笔记与实例详解

表示任意一个换行符之外字符 常用组合: .*? 表示最小匹配所有字符(拒绝贪婪匹配) 3....普通转义字符: \d 匹配一个数字;等价于[0-9] \D 匹配除数字以外任何一个字符;等价于[^0-9] \w 匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_] \W 匹配英文字母、数字和下划线以外任何一个字符...;等价于[^0-9a-zA-Z_] \s 匹配一个空白字符;等价于[\f\n\r\t\v] \S 匹配空白字符以外任何一个字符;等价于[^\f\n\r\t\v] \f 匹配一个换页符等价于 \x0c...和下面的一样,不同是匹配到最后(全局匹配) * preg_match — 进行正则表达式匹配,只匹配一次,返回1,否则0, 格式:preg_match(“正则表达式”,”被匹配字串”,存放结果变量名...",$a); //var_dump($a); //匹配字串所有is //preg_match("/.

2.8K40

正则表达式模式修正符简单测试

正则表达式模式修正符: i 忽略大小写 m 多行视作一行 g 全局匹配 s .圆点匹配换行符,默认不包括换行 x 空白字符除了被转义或在字符类中以外完全被忽略,在未转义字符类之外 # 以及下一个换行符之间所有字符...e preg_replace() 在替换字符串中对逆向引用作正常替换 u 此修正符启用了一个 PCRE 中与 Perl 不兼容额外功能。模式字符串被当成 UTF-8。...U : 正则表达式特点:就是比较”贪婪“ .* .+ 所有字符都符合这个条件 <?...php $str="abCd efg"; preg_match("/c(.*)e/is", $str,$m); //s .圆点匹配换行符,默认不包括换行 //i 忽略大小写 //m 修改^开头作用...(1) "e" } //g 在测试时报错,Unknown modifier 'g',因此建议使用preg_match_all $str="abcabc"; preg_match_all("/b/",

62440

【CTF竞赛】无参数RCE总结

03 方法(二) 除了调用php自身库函数读取文件内容以外,还可以通过调用php执行命令函数,读取flag文件内容。...> exec(): exec执行command命令,但是不会输出全部结果,而是返回结果最后一行,如果想得到全部结果,可使用第二个参数,让其输出到一个数组,数组每一个记录代表了输出一行。...在无需输入参数情况下,获取外界变量值 此处,用到一个函数,get_defined_vars ( void ) ,此函数返回一个包含所有已定义变量列表多维数组,这些变量包括环境变量、服务器变量和用户定义变量等...此时b值,又为数组中最后一位,可以用到end()函数,end()函数作用是将 array 内部指针移动到最后一个单元并返回其值。...命令执行 于是,最后一步,配合使用eval()函数,将b后面参数转换成php代码进行执行,此处可以使用上面介绍几种命令执行函数获取flag。

4K10

PHP核心技术与最佳实践 读书笔记 第三章 正则表达式基础与应用

3.1.1 PHP正则函数 NFA和DFA PHP有两套正则函数 :PCRE库 preg_ 和POSIX扩展ereg_(不推荐) 3.1.2 正则表达式组成 分隔符,表达式和修饰符...点号.是元字符,匹配除了换行符以外任意字符。 *同样是元字符,它指定“*”前面的内容可以连续重复使用任意次以使整个表达式得到匹配。...匹配换行符以外任何字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词开始或结束 ^ 匹配字符串开始 $ 匹配字符串结束 - 表示范围 [] 匹配括号中任意一个字符...转义符\ \Q和\E也可以在模式中忽略正则表达式元字符 \Q和\E之间元字符都会作为普通字符来匹配 $reg="#[aby\{]#"; $str='a\bc[]{}'; preg_match_all...\B 匹配不是单词开头或者结束位置 [^x] 匹配除了x以外任意字符 [^aeiou] 匹配除了aeiou这几个字符以外任意字符 3.3.4 分支 |表示分支 3.3.5 分组

61810

python中正则表达式学习

常用元字符 代码 说明 ....匹配换行符以外任意字符 \w 匹配字母或数字或下划线 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词开始或结束 ^ 匹配字符串开始 $ 匹配字符串结束 常用限定符 代码/语法 说明...\D 匹配任意非数字字符 \B 匹配不是单词开头或结束位置 [^x] 匹配除了x以外任意字符 [^aeiou] 匹配除了aeiou这几个字母以外任意字符 常用模式修正符 代码/语法 说明 i...D 强制尾部无任何内容.若使用$限制结尾字符,则不允许结尾有换行 U 禁止贪婪匹配,只匹配最近一个字符串(不重复匹配) e 配合PHP函数preg_replace()使用,可以把匹配来字符串当作正则表达式执行...*匹配所有字符,所以一直进行匹配,指导匹配最后一个”,发现了字符串末尾,这是控制权交给c; c匹配失败(因为已经有.*匹配过了),然后进行回溯; .

45010

PHP中有关正则表达式函数集锦

当时初学PHP根本不知道PHP有专门抓包工具,就像Simple_html_dom.php(在我其他博文中有提到),之前根本就不知道有这东西,所以就自己废着劲去学习正则表达式,然后再学习PHP中正则表达式函数是如何使用...,然后再分析自己要抓取DOM,最后写自己正则表达式,正则表达式,写着还可以,不过自己刚写完正则表达式就可能看不出他是什么意思。   ...进行全局正则表达式匹配   1.preg_match_all()   与preg_match()函数类似。如果使用了第三个参数,将把所有可能匹配结果放入。...正则表达式拆分   1.split()和spliti()   函数原型:array split (string $pattern, string $string [, int $limit])   本函数返回一个字符串数组...如 果设定了$limit,则返回数组最多包含$limit个单元。而其中最后一个单元包含了$string中剩余所有部分。spliti是split 忽略大小版本。

1.1K50

正则表达式学习笔记

(点)表示换行符以外任意内容。 字符组和数量常常组合起来使用,如匹配四位数字可以用\d{4}。...其他还有\W(表示非\w)、\D(表示非\d)、\S(表示\s)、[^abc]表示匹配abc以外字符。 5、转义 转义使用反斜杠\,这个和很多程序语言相同。即\\匹配\,\.匹配.等。...、{n}、{n,}、{n,m} 4) ^、$、任意字符 5) | 三、PHP正则表达式匹配函数 1、preg_math 官方文档int preg_match ( string...该函数匹配成功一次后,会从匹配成功最后一个位置开始,继续往后匹配。...使用方法是$pattern= ‘%exp%s’ 3) 多行模式 多行模式表示,当$pattern是多行内容时,如果加上$、^,该模式下,会将$、^之间内容当成一行内容,忽略字符串当中换行

1.2K120

Mybb 18.20 From Stored XSS to RCE 分析

这样一来攻击者就很难构造储存型xss了,因为除了这些标签以外,其他标签都不会被解析(所有的左右尖括号以及双引号都会被转义)。...在/inc/class_parse.php line 435 parse_mycode函数中就是主要负责处理这个问题地方。...最后浏览器会做简单解析分割处理,最后生成了相应标签,当url中链接加载完毕,标签动作属性就可以被触发了。 ?...2.2 管理员后台文件创建漏洞 在Mybb管理员后台中,管理员可以自定义论坛模板和主题,除了普通导入主题以外,他们允许管理员直接创建新css文件,当然,服务端限制了管理员这种行为,它要求管理员只能创建文件结尾为...写在最后 整个漏洞其实说到实际利用来说,其实不算太苛刻,基本上来说只要能注册这个论坛账号就可以构造xss,由于是储存型xss,所以无论是发送私信还是广而告之都有很大概率被管理员点击,当管理员触发之后

84120

正则表达式教程

所有的h标签,这种写法考虑到了H标签大小写 PS.在w3c规范里还是推荐所有html标签都必须是小写字母,所有属性都使用双引号包裹 排除型匹配 gr[^ae]y 匹配除了grey和gray以外所有单词...^代表每一行开始,$代表每一行结束 ^$ 匹配空行 ^foot$ 匹配只有foot一个词行 元字符出现可以理解为方便书写 基础元字符表 代码 说明 ....匹配换行符以外任意字符 \w 匹配字母或数字或下划线或汉字 \W 匹配任意不是字母或数字或下划线或汉字字符 \s 匹配任意空白符 \S 匹配任意非空白符 \d 匹配数字 \D 匹配非数字 \b...告诉重复符*不要匹配太多,所以当找到第一个c时候就收手了,而默认情况下匹配到了最后一个c。...简单一行规则就包含了十分复杂逻辑和运算,确实快赶上一门程序语言了,如果你能够掌握他,那么他会极高提高你工作效率。

2.4K20

正则表达式教程

所有的h标签,这种写法考虑到了H标签大小写 PS.在w3c规范里还是推荐所有html标签都必须是小写字母,所有属性都使用双引号包裹 排除型匹配 gr[^ae]y 匹配除了grey和gray以外所有单词...^代表每一行开始,$代表每一行结束 ^$ 匹配空行 ^foot$ 匹配只有foot一个词行 元字符出现可以理解为方便书写 基础元字符表 代码 说明 ....匹配换行符以外任意字符 \w 匹配字母或数字或下划线或汉字 \W 匹配任意不是字母或数字或下划线或汉字字符 \s 匹配任意空白符 \S 匹配任意非空白符 \d 匹配数字 \D 匹配非数字 \b...告诉重复符*不要匹配太多,所以当找到第一个c时候就收手了,而默认情况下匹配到了最后一个c。...简单一行规则就包含了十分复杂逻辑和运算,确实快赶上一门程序语言了,如果你能够掌握他,那么他会极高提高你工作效率。

1.9K30

Mybb 18.20 From Stored XSS to RCE 分析

这样一来攻击者就很难构造储存型xss了,因为除了这些标签以外,其他标签都不会被解析(所有的左右尖括号以及双引号都会被转义)。...最后浏览器会做简单解析分割处理,最后生成了相应标签,当url中链接加载完毕,标签动作属性就可以被触发了。...管理员后台文件创建漏洞 在Mybb管理员后台中,管理员可以自定义论坛模板和主题,除了普通导入主题以外,他们允许管理员直接创建新css文件,当然,服务端限制了管理员这种行为,它要求管理员只能创建文件结尾为...可以看到我们成功写入了php文件 完成漏洞复现过程 储存型xss 找到任意一个发送信息地方,如发表文章、发送私信等…....写在最后 整个漏洞其实说到实际利用来说,其实不算太苛刻,基本上来说只要能注册这个论坛账号就可以构造xss,由于是储存型xss,所以无论是发送私信还是广而告之都有很大概率被管理员点击,当管理员触发之后

61510

hctf2016 guestbook&secret area writeup

'/i'; return preg_replace($xsssafe, '', $string); } 我们看到其实只有很少过滤,而且是单层,对于xss来说,只需要复写2次就可以绕过了,类似于 scrscriptipt...有什么样问题,试试上,整个CSP除了限定了域以外,没有做任何限制,可以执行任意js,这也就导致了使用人数比较多非预期做法。...1、static下不存在任何非静态文件,除了redirect.php 2、redirect.php跳转位置可以自定义 3、我们上传头像没有任何上传漏洞,上传位置是/upload/ 这里先给出一篇文章...u=/upload/cf4b03010ddaafec5933f656fad2692d"> 前面步骤相同,最后域限制通过跳转来绕过 这个其实没什么好说,其他部分相同,只有最后一步使用...精心构造flash xss 这种方式是Blue-Whale师傅想到,根据上面CSP限制,我们很快就能发现其实对于script以外部分都比较友好,只要在域内就可以了,再加上,域内存在上传点,那么我们是不是可以构造一个

23320

Tweet档案

我还做了一个试验,用它直播我大连之行,最后结论是,它对我真的没用! ? 不过,从今年开始,我看法变了。 我发现,查看最新消息,比如某地发生地震,"微博"是最好工具。...第一步,从TweetBackup.com下载你所有发言。不过,最多只能返回3200条结果。...它作用是将网址字符串,转成超级链接。但是,除了网址以外,我们还要转"@"、"#"这两个特殊字符,所以要对这个插件做一些修改。...打开这个插件sem-autolink-uri.php文件,找到下面这一行: $text = autolink_uri::unescape($text); 在它前面,再加两行, $text =...preg_replace_callback("/(^|\s)@(\w+)/",array('autolink_uri', 'tweet_callback1'), $text); $text = preg_replace_callback

49620

想学习php,不如来这里看看

); 2.parse_url($str);专门针对url地址拆分 3.parse_str($str['query'], $arr);拆分更具体 4.preg_split('/ /',$srr['']);...(点) 代表任意一个字符,但不能匹配换行符\n \w 代表任意一个字母、数字、下划线 \W 除了字母、数字、下划线以外任意一个字符 \d 代表任意一个数字 \D 代表任意一个非数字 \s 匹配空白字符...4.例子 $str = "LINUX and php are lamp or linux is good"; $ptn = '/linux/i';//匹配出字符串中linux preg_match_all...1.preg_match();正则表达式匹配 2.preg_match_all();正则表达式全匹配 3.preg_grep();可以做搜索 字符串替换 4.preg_replace...); 30.php错误处理 1.关闭和开启报错 display_errors = On display_errors = Off(不建议使用) 2.报错级别 E_ALL 所有以下错误 E_NOTICE

1.3K30

正则表达式使用

正则表达式在php使用 php中支持正则表达式函数 preg_filter 执行正则表达式搜索和替换 preg_grep 返回匹配模式数组条目 preg_last_error...返回最后一个正则执行产生错误代码 preg_match_all 执行一个全局正则表达式匹配 preg_match 执行一个正则表达式匹配 preg_quote 转义正则表达式字符 preg_replace_callback_array...preg_split 通过一个正则表达式分隔字符串 phpPREG常量 PREG_PATTERN_ORDER 结果按照”规则”排序,仅用于preg_match_all(), 即$matches...PREG_BAD_UTF8_ERROR 如果最后一个错误是由于异常utf-8数据(仅在运行在 UTF-8 模式正则表达式下可用) 导致,调用preg_last_error()返回。...将匹配单个 “o”,而 ‘o+’ 将匹配所有 ‘o’。 . 匹配换行符(\n、\r)之外任何单个字符。要匹配包括 ‘\n’ 在内任何字符,请使用像”(.|\n)”模式。

89020

Mybb 18.20 From Stored XSS to RCE 分析

这样一来攻击者就很难构造储存型xss了,因为除了这些标签以外,其他标签都不会被解析(所有的左右尖括号以及双引号都会被转义)。...在/inc/class_parse.php line 435  parse_mycode函数中就是主要负责处理这个问题地方。...最后浏览器会做简单解析分割处理,最后生成了相应标签,当url中链接加载完毕,标签动作属性就可以被触发了。...3.jpg 2.2 管理员后台文件创建漏洞 在Mybb管理员后台中,管理员可以自定义论坛模板和主题,除了普通导入主题以外,他们允许管理员直接创建新css文件,当然,服务端限制了管理员这种行为...写在最后 整个漏洞其实说到实际利用来说,其实不算太苛刻,基本上来说只要能注册这个论坛账号就可以构造xss,由于是储存型xss,所以无论是发送私信还是广而告之都有很大概率被管理员点击,当管理员触发之后

71740
领券