这样的正则表达式为什么不行? 这样试试:(\"GET \/)|(\"POST \/)(^\.gif)(HTTP\/1.0\")|(HTTP\/1.1\") 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键就在于,不能把".gif"排除掉,难!难!难! ^(\"GET /|\"POST /)(?!\.gif)*(HTTP/1\.0\"|HTTP/1\.1\")$ ^(\"GET /|\"POST /)(?!\.gif)*(HTTP\/1\.0\"|HTTP\/1\.1\")$少了两个,呵呵。。 <?php$s = <<< TEXT211.136.23.7 - - 050605235909 0 "GET /wawama/private/games/dixiaducheng/duchenglunpan/lunpan_result.jsp?val=100&choice=36&game_type=3&wsid=1117986021741204 HTTP/1.0" 200 1019 "-" "MOT-E680/R51_G_0F.51.A1P MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-1.1" "13637630308" "wap.wawama.com"TEXT;preg_match_all("/\"(?:GET|POST) .+ HTTP\/1\.[01]/isU", $s, $ar);print_r($ar[0]);?>然后遍历$ar[0]删去含有".gif"的元素 这样^(\"GET /|\"POST /)(?!\.gif)*(HTTP\/1\.0\"|HTTP\/1\.1\")$应该是对的。但是执行出错,关键就在于,不能把".gif"排除掉。文档上说这样(^\.gif)可以只排除.gif,可是不知道为什么不行。 上面说错了,是(?!\.gif)可以只排除.gif,但是为什么不行? preg_replace_callback("/\"(?:GET|POST).*(\.gif)?.*(HTTP\/1\.0\"|HTTP\/1\.1\")/isU","stripe_gif",$text);function stripe_gif($matches) { return $matches[1].$matches[3]; }不知道合不合您的要求?? 或者:function stripe_gif($matches) { return $matches[1].$matches[2].$matches[4].$matches[5]; }preg_replace_callback("/\"(?:GET|POST)(.*)(\.gif)?(.*)(HTTP\/1\.0\"|HTTP\/1\.1\")/isU","stripe_gif",$text); 其实我现在也遇到了这个问题,间接解决的方法很麻烦,而且影响速度!我只能回家k书了,不知道perl有没有解决的办法,建议楼主去其他perl的子论坛求解!!书到用时方恨少啊!!!! :( 用php实现动态访问其他网站。 想做个微博系统。大家说说看,数据库要怎么设计? include path 请问在函数中直接放置一个变量,变量是有操作的代码,那么函数会运行吗,菜鸟 PHP简单图片上传,看看哪出问题了? 为什么用zendguard 加密的文件不能和未加密的文件混用? 怎样屏蔽掉浏览器的script错误提示? PHP中使用COM的问题! 逻辑问题 刚写的主页,帮我测试一下是不是能正常访问.(http://cyhweb.126.com) 大家帮帮忙,关于session的问题 请熟悉PHP的朋友帮下小忙。。可以用人民币做酬~~有时间的请进
少了两个,呵呵。。
$s = <<< TEXT
211.136.23.7 - - 050605235909 0 "GET /wawama/private/games/dixiaducheng/duchenglunpan/lunpan_result.jsp?val=100&choice
=36&game_type=3&wsid=1117986021741204 HTTP/1.0" 200 1019 "-" "MOT-E680/R51_G_0F.51.A1P MIB/2.2 Profile/MIDP-2.0 Configuration/CLDC-
1.1" "13637630308" "wap.wawama.com"
TEXT;
preg_match_all("/\"(?:GET|POST) .+ HTTP\/1\.[01]/isU", $s, $ar);
print_r($ar[0]);
?>
然后遍历$ar[0]删去含有".gif"的元素
^(\"GET /|\"POST /)(?!\.gif)*(HTTP\/1\.0\"|HTTP\/1\.1\")$
应该是对的。但是执行出错,关键就在于,不能把".gif"排除掉。
文档上说这样(^\.gif)可以只排除.gif,可是不知道为什么不行。
preg_replace_callback("/\"(?:GET|POST).*(\.gif)?.*(HTTP\/1\.0\"|HTTP\/1\.1\")/isU","stripe_gif",$text);function stripe_gif($matches) {
return $matches[1].$matches[3];
}不知道合不合您的要求??
function stripe_gif($matches) {
return $matches[1].$matches[2].$matches[4].$matches[5];
}
preg_replace_callback("/\"(?:GET|POST)(.*)(\.gif)?(.*)(HTTP\/1\.0\"|HTTP\/1\.1\")/isU","stripe_gif",$text);
我只能回家k书了,不知道perl有没有解决的办法,建议楼主去其他perl的子论坛求解!!
书到用时方恨少啊!!!! :(