6.
@孤荷行,这个,,正则匹配有css没,有再正则是外链or内链,外链则获取
7.
@funch,我有实现思路的,的确需要用正则匹配,我只是随便说说
10.
@funch,我写了一种匹配正则出现错误,后来写了这种正则,但是我看这个正则真的不爽,这个靠.css扩展名来匹配真的不靠谱。
(?i)<link[^<>]*href=[\"']?([^\"'<>]+\\.css)[\"']?[^<>]*>
12.
@老虎会游泳,我的第一个是要匹配type="text/css"的,结果导致我程序出错,后来就改成了现在这个正则来测试一下
13.
@老虎会游泳,我的第一个正则
(?i)<link[^>]*type=[\"']?text/css[\"']?[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*>|(?i)<link[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*type=[\"']?text/css[\"']?[^>]*>
14.
@孤荷行,你为什么不尝试分步进行呢?
<link([不含>]*type=['"]text/css['"][不含>]*)>
先匹配出css标签的全部属性,然后再从中匹配出地址不就方便多了?
15.
@老虎会游泳,我是想一步到倍,所以就懒得分步了,如果无法一步解决那就只能分步了,分步还是有点麻烦的,首先第一次匹配得把数据截取出来,然后再进行匹配,再截取,这样循环有点多
16. preg_match('#<link([^>]+text/css[^>]*)>#Ui',$html,$css);//某些html没加"/'
preg_match('#href=([^\s]+)#Ui',$css[1],$cssi);
$url=str_replace(array('\'','"'),array('',''),$cssi[1]);
17.
@老虎会游泳,要是还不行那我就得把
(?i)<link[^>]*type=[\"']?text/css[\"']?[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*>|(?i)<link[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*type=[\"']?text/css[\"']?[^>]*>
分成
(?i)<link[^>]*type=[\"']?text/css[\"']?[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*>
(?i)<link[^>]*href=[\"']?([^\"'>]+)[\"']?[^>]*type=[\"']?text/css[\"']?[^>]*>
这两条进行两次匹配,这样应该还是可以的
19.
@孤荷行,JAVA的正则不支持回调函数吗(比如类似preg_replace_callback的)?这样就不用循环了。