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
23

重过手套生活

By xrspook @ 21:28:34 归类于: 烂日记

我的幸福生活没有持续24小时,下水才约20小时,一次砻谷机卡机,一次打开机盖,左手食指又被划到了,那时还不知道,直到莫名其妙地看到白色实验桌上星星点点的血印……直接冲去洗手间,因为当时两手脏死了,那一刻很纠结,到底是先洗伤口呢还是先洗手的其它部分? 最后还是先洗其它部分再冲伤口,接着直接向办公室的碘伏和创口贴冲去。其实呢,血很快就止住了,冲水过后已经没流,之前为什么会弄得桌子星星点点是因为当时完全没有意识到,正专心致志地折腾那该死的机器,手指乱摸。

我应该感到庆幸,因为其实左手的食指和中指也在那个开盖操作时划破了,不过不深,不到流血的状态而已,否则,哼哼哼,我可真好玩了。

剪下一个一次性手套的指头,再剪下一个乳胶手套的指头,因为我的正经事还没完呢。

就这样,我才偷乐了20小时,又不得不过上手套生活。

在大路上摔的一跤,1秒都不到,却花费了接近200块的钱财和18天时间,才算勉强摆平。今天又是一次秒杀。我可以handle隐隐作痛,但为什么要去handle呢?!不曾遇到那该多好。

食指废掉,键盘的一片地方都变得不方便,就此打住吧。

2010-11
22

下水

By xrspook @ 21:16:44 归类于: 烂日记

第18日的晚上,老天爷安排我自己把痂给撕掉了,第19日的早上,老天爷安排我忘带胶手套,于是第19日的晚上,我要不再找一双手套,要不结束18日来的无水境界。于是,在今晚8点多的时候,双手下水了。也不知道是真是假,在一开始的时候,感觉那片位置特别敏感,有种异样的感,但随着洗衣服、洗头和洗澡的程序推进,一切都变得那么的自然。开始是贴着创口贴的,但热水十几分钟的接触后,创口贴粘不稳了,也只好直接撕掉,感觉如何?没啥特殊的感觉。湿润后的那片位置比干的时候还舒服,干的时候还会有偶尔扯痛,但湿了以后,感觉好极了!湿了以后,也能看出一个现象,其实那两片位置掉的不是一层皮,而是不规则的掉了一些,就像那些无良施工队修完什么电缆水管没有重新把路面铺好的状态。

好不容易才拍了几张。

别埋怨我,因为我是个变态的人,所以才拍了以下三组。

双手的“痊愈照”。痂揭掉就这个状态了,算是挺完美的痊愈,你觉得这个状态下,我还会感觉到痛吗?

痂的对光照,没想明白,为什么会透光的,而且是那么的不均匀。右手的伤口上有粒我开始清创时没有弄掉的小沙,幸好那东西最终没有留在我的手上而是转移到痂里去了。

试了很多次,都没办法不用闪光灯把痂给照清楚,于是又试了好几个角度的闪光灯效果,还好,总算大致把实物还原出来。如果用体视显微镜看的话,应该会很精彩。

变态的我仍把那痂给留住,等某个机会继续照……

2010-11
21

撕掉leeeeeeee

By xrspook @ 21:32:51 归类于: 烂日记

英文真好,根本不用“~~~”,直接把单词最后的字母重复就好了。为了不在题目里用上非字母或中文字符,只好把“了~~~”写成了“leeeeeeee”,嘻嘻嘻。

经历了18天(2010-11-03中的招)的烂手日子之后,今天,晚上约8:30,去掉创口贴用碘伏消毒的时候,终于,轻松地把两手的痂去掉了!!!先消毒的是左手,但貌似没有要掉的趋势,然后轮到右手,右手的痂要比左手薄,本来就只剩下上下两个位置粘着了,由于痂的表面不光滑,所以非常容易勾到棉签,也罢,但居然偶然地棉签把痂的下面勾住拉起来了,于是,继续努力地涂液,最后把上面的粘连处也搞掉。那个兴奋啊~~~然后再回头看左手,本来我是不抱什么希望也弄掉的,谁知把手反过来的时候痂居然只有一个点粘着,吊在那里,又沾了些碘伏,努力地把它搞下来,一开始是有点痛,但皮肤被液体浸湿后软了,也就不痛了。经过故意/偶然的步骤后,也最终把左手的痂给去掉。Oh yeah~~~

虽然撕掉了,但还是用碘伏做了表面消毒,然后用创口贴盖住,毕竟那个部分太柔嫩了,避免意外是重点,但可以肯定的是,我可以重新大大咧咧地洗手了!

在过去的18天里,我破了自己不少记录:

1、选择了碘伏为头号消毒药
2、75%的医用酒精变成伤口外围的清洗剂
3、基本上24小时都盖着创口贴,一天换2次或以上
4、每天戴2次或以上的一次性塑料手套
5、每天带着胶手套洗脸、洗头、洗澡
6、用脚踩的方法洗衣服

有太多太多的担心,从感觉不到痛,到大痛,到剧痛,到刺痛,到抽痛,到基本不痛,最后,这个恐怖经历终于告一段落。

妈老说我是胆小鬼,但到痂快掉的时候,我很多手去是撕,她又说我太多管闲事自找麻烦,很囧的评价嘛。

无论怎样,今天对我来说是个大喜日子!

2010-11
21

PPV前的无聊

By xrspook @ 19:45:35 归类于: 影视小感

PPV前都会很无聊,比如说Bragging Rights 2010前的20101015SD,比赛太多了,时间太短了,Traditional Survivor Series Elimination Tag Team Match是5对5,所以20101119SD就有7+1场比赛,一场是用来铺垫Kaval在SS上挑战Dolph Ziggler的Intercontinental Championship Match,一场为SS前奏的DIVAS赛,单纯为SS Tag Team Match准备的5场比赛结果只能是Team Rey Mysterio vs. Team Alberto Del Rio = 2:2,外加一场乱入的DQ。太多的铺垫,太多的剧情,技术都不知哪去了。

根据新闻显示(新闻1新闻2新闻3)如果不是因为Rey Mysterio健康的原因,Survivor Series 2010上,619 vs. ADR应该是一场Best of Three Falls “Lucha” match(三盘两胜赛,经典的墨摔比赛形式)。如果Rey的耳朵没问题,那该多好,比现在的10人乱斗好多了,不过,根本没有如果,如果有如果的话,ADR就不会登场SD不久就剧情安排把619重伤,然后再把Christian重伤了。不过我还是要说,如果真有如果的话,来一场Best of Three Falls “Lucha” match,619和ADR的恩怨大概就会就此打住。但这般的乱入,10人的Elimination Tag Team Match根本不够说服力结束两人的纠结。只有继续拖入到更多的PPV了,囧啊!

Chris Masters vs. Jack Swagger
Dolph Ziggler vs. Kaval
Big Show vs. Tyler Reks
Alberto Del Rio vs. Rey Mysterio

都是近秒杀赛!!!!动作没做几个就完了。汗得我一塌糊涂。

剩下的Drew McIntyre vs. MVP,哎~~~ The Chosen One能摔得漂亮?摇头ing…

幸好,还有一场Cody Rhodes vs. Kofi Kingston,耍帅的Cody Rhodes有一段时间我真的不喜欢他,但就技术而言,这个摔二代遗传了美摔的快准狠。感觉很爽快,碰上Kofi Kingston,观赏性不错的,没有拖沓,两人“锁”得不多,即便锁了,也很快结束,取而代之的是很多翻飞。呵呵,“翻飞”这个词正好用在他俩身上,Cody的翻——cross,Kofi的飞——fly。一开始就因为Kofi扇了Cody一巴掌,把他直接怒疯了冲到台下照镜子,实在是好笑,其实呢,若不是Kofi老是不忘向Cody最关心的脸部发起进攻,Cody大概是不会那么快就用Cross Rhodes赢掉,Kofi的集中火力攻击脸部实在激怒了Cody。

最后的Ten Man Tag Team Battle Royal简直是一团糟。从前我很喜欢看多人乱斗,但不知从什么时候开始我知道了原来多人比赛是用来减轻单人工作量,我就开始觉得团斗有点儿戏无聊了。大概是我偏心的原因,只顾盯着某人,感觉Rey Mysterio、Big Show、MVP联手起来对Team Del Rio的队长特别“照顾”,Big Show对他使出了3次Open-handed Chop,MVP抓紧时间来个Knee Drop,而Rey Mysterio呢,来了好几个Dropkick,最后还秀出一个Hurricanrana直接把ADR给淘汰了。不得不说,在人满为患的擂台,通常都是不使什么招数,直接乱拳猛打,乱脚死踹的,最多就来几个Headbutt,然后把自己的对手给翻下去,但为什么还要给这个heel的队长编排这些虐呢?暗暗觉得,在SS里,用某种方式他会大大地复仇,或许他的heel team赢面不大,但这个队长,应该会秀出一些能让WWE Universe觉得他是authentic hero的不知什么新花招出来。

插一句,ADR这期又没带knee pad了,可以得出结论,在不激烈的赛程下,他是不会带knee pad的。这也可以解释,为什么在定妆宣传照里他没戴knee pad。

最后,说点别的。

一个英文很好,一个英文不好,但两个都表情丰富,在擂台的mic技上两人已经来过一场了,希望在摔技上也能较量较量。

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