Articles under the label of 正则表达式

nginx

由于nginx配置不支持嵌套if的写法,也不支持and or 这些写法,通过变相方式实现。以下场景是,域名绑定了泛域名,要求如果域名是*.city.domain.com 就禁止post ,如果不是就全部允许set $refuse_post 0; if ( $host ~* (.*)\.city\.(.*) ) { set $refuse_post "${refuse_post}1"; } if ( $request_method = POST ) { set $refuse_post "${refuse_post}2&quo...

- Read More -
nginx

#如果上游用giz压缩,需要以下配置,否则subs_filter会失效替换不到 proxy_set_header Accept-Encoding ""; proxy_pass http://192.168.0.3; #subs_filter字符替换 subs_filter 'jingjia.aaa.cn' 'zt.bbb.cn/jingjia'; #subs_filter正则替换 subs_filter "show\_(.+?)\.html" "$1" gir; 早前写过一次 lua改写nginx querystring参数内容...

- Read More -
php

两次遇到,第一次用非贪婪模式正则处理了不是特别长的字符串匹配 ,第二次直接怎么完善正则也获得不了结果了。因为匹配的字符串太大了,1M多,一个base64的大图。<?php $html = '太长了,放附件demo'; $img_pattern = '/<img(.*?)src="(.+?)"/i'; preg_match_all($img_pattern,$html,$match2); print_r($match2); 处理方法是pcre.backtrack_limit这个参数。#加这一行设定参数 ini_set('pc...

- Read More -
php

经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。我们可以这样写:1,但这样的正则表达式完全是另外一个意思,它的意思是字符串里不能包含‘h',‘e',‘d'三个但字符。那什么样的正则表达式能过滤出不包含完整“hello”字串的信息呢?事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配,从而解决我们的问题:复制代码 代码如下:^((?!hede).)*$上面这个表达式就能过滤出不包含‘hede'字串的信息。我上面也说了,这种写法并不是正则...

- Read More -
默认分类,nginx

nginx .htaccess根据不同域名使用不同规则,当然也可以写在server段,也可以在server段根据不同域名加载不同的.htaccessnginx 只加载配置,并非一定要.htaccess ,可以是.conf .mp3等。本例是在.htaccess中配置 根据不同域名使用不同规则.if (-e $request_filename) { break; } #if (!-e $request_filename) { if ($http_host = 'www.abc.com') { rewrite ^(.*)$ /ab...

- Read More -
This is just a placeholder img.