2011-04
9

加班幌子中

By xrspook @ 22:39:27 归类于: 烂日记

周末,加班也好,不加班也好,一个样,反正我是习惯周末粘电脑的了。

今天完成了YARK的小升级,实现了对http://www.wwelivetour.com/的兼容,虽然呢,这个地方放出来的图片大多是WWE的官图,但有些虽然角度和光线不太好,显然是摔迷上传的照片是重点,纯粹凭直觉去判定那是不是官图,但管它呢,全部贴出啦就得了。正则是神仙,神马鬼东西都不怕,只要是规则的,不是用随机码遮遮掩掩的。但即便是遮遮掩掩的也会有解决办法,比如说Flickr遮遮掩掩的原图还不是有人能读取出来,呵呵呵。

两个星期后,我再次开始写19977的摔角统计报告,2011年第12周Single版的debut不错,第13周,也就是WrestleMania前的一周,WWE的摔角周赛简直让人掩面,所以绝对应该让看Impact!的Single去报告的,其实呢,我还想继续酱油下去,但这周Smackdown再次回到了25min以上,我是得兴奋一下的。喜不喜欢是个很主观的东西,心情很重要,精彩不精彩就是建立在这两个因素之上了。我越来越对吹得很厉害的PPV表示不敢恭维了,先是Royal Rumble,然后是WrestleMania,所以,对往后的Summerslam我不打算抱太大希望,更不用说明年的WrestleMania了。

还有Smackdown观后感没写。

还有WrestleMania的外国统计报告没翻译。

只剩下一个周日了,我能干完么?

2011-04
1

用Dropbox做文件中转

By xrspook @ 17:29:19 归类于: 烂日记

一直很小心对待的WordPress升级原来只需点击后台,升级过程不超过10秒就好了。不得不说,我一直以来都太小心了……但其实我一直没有对WP的核心程序做修改,我修改的只是插件和主题,恰好那两样东西都是核心WP程序所没有的,所以,即便升级,新程序覆盖上去,也是没有丝毫问题的。为什么从前我脑袋瓜里想到的是删除并重新建立而不是覆盖替换呢?!显然,我想过头了。

有xinca在一切问题都不是问题,即便有再大的问题,他老人家也一定可以解决。

自从我们搬到新服务器后就没有安装后台,所以当我向他要后台登录方式的时候他无法拿出。那怎么更新呢?没有后台,也没有FTP。今天我们用了一种全新的更新方式——Dropbox,利用Dropbox的同步实现读写!!!!太牛了!因为我要修改更新的只是些几KB的小php,转眼间Dropbox就同步完成,同步完成后,网页也就能显示了。我们利用Dropbox实现从前FTP的功能,但FTP,你懂的,那东西有多慢,而且Dropbox还能自动保存你不同版本的东西1个月,这种优势FTP无法与之相比。有什么比我们系统文件夹内操作更可视化的呢?

不得不说,利用Dropbox的同步技术,实现单机和服务器之间的数据交换真的爽!但唯一可能有缺陷的就是无法设置文件的各种读写权限,暂时,我还用不着那个。Dropbox同步是高超的,但同时也可以是致命的,如果某天某坏人删掉你电脑的那些东西,虽然Dropbox有后悔药,但还是很恐怖的。

今天偶尔发现WWE改版后的图片展示页出现了图片说明,但不是每张图片都有,通过href里的title或img里的alt体现,没搞懂,为什么img的引用地址居然用ref开头而不是src开头呢?不是说每个img必须有alt才能符合W3C的要求吗?显然,WWE改版后一些图片有alt一些没有,汗。首先我使用2个正则获取到图片地址及不是每个图片都有的描述,然后,再用2个for语句实现图片数组和描述数组的统一,这样做有点笨,希望有高手指点改进,源程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
preg_match_all('/(?< =href="\/f)(.*?)" title="(.*?)">/', $data, $alt);
preg_match_all('/(?< =href="\/f).*\.jpg/', $data, $log);
for($m=0;$m<count($log[0]);$m++)
{
	for($n=0;$n<count($log[0]);$n++)
	{
		if($alt[1][$n]==$log[0][$m])
		{
			$alt2[$m]=$alt[2][$n];
		}
	}
}

感觉周赛图片WWE都没放描述,只在一些WrestleMania Axxess活动里放了,希望呢,那些做网页的勤快点,描述是很重要的啊!

今天是GA的musical drama集,兴奋呢!

2010-11
26

再谈php正则提取图片地址

By xrspook @ 21:46:54 归类于: 烂日记

前天写了小谈php正则提取图片地址,但其实,提取src=里面的图片地址还不足够,因为不能保证那个地址一定是绝对地址,完全的地址,如果那是相对的呢?如果地址诸如:

albums/Candids/thumb_P1050338.jpg
/content/media/touts/5271608/5271654/15320982

那该如何是好?

有时在这些地址前面需要加http://example1.com/,有些甚至要加http://example1.com/example2/…/于是,要写出出一种法则符合所有要求,简直是天方夜谭。只能见机行事对症下药。有时,需要从前面动刀,有时需要从后面砍断。

今天,我惊讶地知道了一个道理,原来http://example.com/http://example.com//////是一样的!

http://img3.douban.com/pics/nav/lg_main_a6.png

http://img3.douban.com////pics////nav///lg_main_a6.png

最终你都能到达

于是,对于一开始提到的两个相对地址如果要强行加入某前缀恢复成绝对地址的话,也不管前面有没有“/”,只管加一个“/”就好,“有杀错,没放过”嘛,多一个显示仍会正常,但少一个“/”,嘿嘿,你就别想成功了。开始的时候我还没意识到这种东西,复制了一大段代码,把一样的东西硬生生弄两份,一份加“./.”,一份不加。我这个火星来的,浪费时间了。

放出2个地址,公测一下网页获取图片的情况:

针对任何网页,需要登入的除外:http://xyark.serw5.com/img.php
针对Coppermine Photo Gallery系统:http://xyark.serw5.com/g.php(如果你认为弹出原图的js页面也需要的话,我只好囧你了)

普页是个对抓取任何图片的尝试,系统专页是为了展示什么叫做具体情况具体分析。试过的童鞋会知道,普页对某些使用Coppermine Photo Gallery系统的网站是行不通的,原因何在?就是那个前缀搞的鬼!但系统专页就能很好地避开了这个问题。

如果大家在测试时发现任何bug,欢迎留言告知。请低调测试,谢谢合作。

注:以上话题纯粹出于就正则谈正则,光技术谈技术,不可作非正当用途。若非正当使用而引发任何杯具、餐具本人概不负责。

2010-11
24

小谈php正则提取图片地址

By xrspook @ 22:34:32 归类于: 烂日记

迷上了正则,不断尝试着新花招,首先感谢TNA的非完全输出RSS,然后再次感谢SH的强迫性学习。没有TNA,我不会去看正则,更不知道世界上有种这么牛的表达式;不是SH的死活说他不懂不知道,我也不会硬着头皮去琢磨,去改进。达到同一个目的,正则的表达方式可以不唯一,没有做不到,只有你没想到。可以这样说吧,正则就是玩设定规律,我大爱这种东西。没有比设定规律筛选东西更让我兴奋、感到awesome的了。

分享一下在php环境下使用正则提取图片地址的一些小心得:

图片网址规范的html代码无非就是

<img style="囧1" title="囧2" src="囧3" alt="囧4" width="囧5" height="囧6" />

囧1和囧2是非必需的,若要通过XHTML认证囧4、囧5、囧6必不可少,囧3是核心内容,当然就不能少了。

就正则谈正则的话,我写出的最短匹配是

(?<=img.+?src=”).*?(?=”)

不过,这条在php里不行,会出现:

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset *** in ***

纠结了很久,都不行,原因何在呢?试了很多次,终于发现问题在(?<=img.+?src=”)这个零宽断言里,在php中,零宽断言里不支持类似“*”、“+”这些无限次的东西,于是报错了,把“.+?”改为定长就好。不过,要“img”和“src=”之间定长基本上是不可能的。通常,图片地址的img和src只会相隔一个很简单的空格,但不排除某些情况在src之前,img后有alt、titlte等东西。

所以

(?<=img.src=”).*?(?=”)

(?<=img\ssrc=”).*?(?=”)

可能可以,但不保证100%没问题。

你也许会问,单纯

(?<=src=”).*?(?=”)

不行吗?通常情况,可以,但,搜索过页面的盆友应该知道,除了图片地址用src开头以外,javascript地址也用src开头!而且,太多神通广大的不可预知因素隐含其中,于是这个貌似很简短完美的写法就行不通了。

你又或许会问,聪明简短的不行,我把图片的后缀列出来,总该可以了吧,如

(?<=src=”).*?\.(jpg|jpeg|gif|png|bmp|JPG|JPEG|GIF|PNG|BMP)

的确,这个写法实在是很老实,不过,你见过没有后缀的图片?wwe.com有很多这种例子呢

RAW http://us.wwe.com/content/media/images/Headers/15559182
SmackDown http://us.wwe.com/content/media/images/Headers/15854138
NXT http://us.wwe.com/content/media/images/Headers/15929136
Superstars http://us.wwe.com/content/media/images/Headers/15815850

上面的网址都是图片,但都没有传统后缀,你老实也没用,还是不能获取到它们。

怎么办呢?还可以这样

<img(.*?)src=”(.*?)(?=”)

和上面的表达式不同,这次的结果中array[0]的内容不是我们想要的,我们要的图片地址在array[2]里。为什么呢?因为我们用了2个(.*?),每个“()”的东西会自动存在一个组里,而array[0]代表结果的汇总,array[1]包含了img和src里的所有东西,array[2]才轮到我们想要的图片地址。这种匹配方法,既能匹配有传统后缀的图片,也能匹配一些无后缀的图片文件,同时又不会杀错其它src=文件。个人感觉还是不错的,呵呵。当然了,如果你还有更好的建议,请马上留言,全球人民都会感谢你!

你到底要什么样的图片,是固定格式还是其它?得具体情况具体分析呢。

我的建议是:

如果你要的图片地址的格式是img空格src=的,请使用:(?<=img.src=”).*?(?=”),数组唯一,你懂的。

否则,请使用<img(.*?)src=”(.*?)(?=”),记得留意有用内容所在的数组位置哦!

2010-11
19

略懂正则后

By xrspook @ 23:59:55 归类于: 烂日记

花费了好几个小时学习正则表达式(Regular Expression),简称regex。非常非常强大的一个程序员利器,在此,再次感谢SH童鞋的强迫性学习。在多种程序语言里正则都通用,用简单的符号却能组合出任何你需要的结果。看着那堆“\/#$&*^()_+|{}<>?=.”等实在会把人弄疯掉,再加上26个英文字母的大小写组合,宇宙就能编出来!这让我想起了大学时期老师教的文献检索,在说到英文数据库的时候就是这般*来?去的,但和相比,英文数据库的搜索方法只是个非常非常的简化版的正则,小儿科而已。

简单看了几个正则教程,最终觉得还是要自己打开个正则测试工具(如Windows下的Regex Tester)实操。

经过还不算太辛苦的挣扎,对TNA而言,我要提取的信息可以用以下正则实现:

(?<=href=”).*\.jpg.php

说明:“(?<=囧)”,定位在囧后;“href=””,一个字符串,也就相当于囧;“.*”,别以为“.”是连接符“*”是任意字符,恰恰相反,“.”代表除换行符以外的任意字符,“*”代表前面的东西,也就是除换行符以外的任意字符可以重复零次或更多次;“\.”,其实就代表了“.”,在正则里,“.”必须用“\”转义;“jpg.php”我的原意是一个字符串,但在正则里,看来“.”也不会被看作“.”,而代表一个除换行符以外的任意字符,也无伤大雅,毕竟我希望的“.”也在正则“.”包含的范围内。

除了用上面的“(?<=href=”).*\.jpg.php”以外,还能把正则改写为:

(?<=href=”).*\.jpg\.php /*把“.”全部正确转义,不打擦边球*/
(?<=href=”).*\b.jpg.php\b /*把“.jpg.php”看作一个单词,很自然地把其中的“.”一般字符化了,“\b”用于匹配单词的开始或结束*/

具体在YARK的正则是这般写的

preg_match_all('/(?< =href=").*\.jpg.php/', $data, $log);
囧囧囧囧
for($i=0;$i<count($log[0]);$i++) 
{  	
	<?php echo '囧'.$log[0][$i].'囧' ?>			
}

说明:由于我的正则表达式里只有一个未知数,也就是“.*”折腾出来的内容,所以,正则结果在新建的$log将是一个二维数组,具体内容将在[0][囧]里显示。如果,正则里有多个未知数,未知数就会分别出现在[0][囧0]、[1][囧1]、[2][囧2]等等里面了。得打一套“组合拳”才能把它们拼凑在一起。

正则搞定了,YARK的TNA瓶颈当然就没问题了啦!

******************* YARK专栏 *******************
2010-11-19
update
* 改进TNA功能,不再依赖页面提供的rss而是自编正则表达式,提取页面信息,再分析出图片地址
bug
* 暂无新发现
plan
* 留个门,对付任何规则资源(正则是强大的,就看你怎么用了)
******************* YARK专栏 *******************

自觉通过自学又提升一个矮矮的层次了。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress