Home  >  Article  >  Backend Development  >  求一个PHP正则

求一个PHP正则

WBOY
WBOYOriginal
2016-06-23 14:11:27940browse



24.143.198.188
<script> <br /> document.write(":"+x+f) <br /> </script>
:80

HTTP
250,890,890
United States

我想取出其IP和端口号;

主要是为了提取http://www.cnproxy.com/proxy1.html这个网页上的代理服务器
24.143.198.188:80
37.57.20.143:3128
37.59.48.180:8118


回复讨论(解决方案)

这不是简但的正则就可完成的
比如

77.37.134.58<script>document.write(":"+ z+c+a+x)</script> HTTP 188,907,922 Russia
77.37.134.58 是服务器ip
z+c+a+x 才是端口号,需要计算出真实值。
而这些 js 变量是在前面的
<script> <br /> z="3";m="4";a="2";l="9";f="0";b="5";i="7";w="6";x="8";c="1";</script>
中赋值的

这不是简但的正则就可完成的
比如

77.37.134.58<script>document.write(":"+ z+c+a+x)</script> HTTP 188,907,922 Russia
77.37.134.58 是服务器ip
z+c+a+x 才是端口号,需要计算出真实值。
而这些 js 变量是在前面的
<script> <br /> z="3";m="4";a="2";l="9";f="0";b="5";i="7";w="6";x="8";c="1";</script>
中赋值的 那我再看看,我是看到python中有实现这个功能,想试试php能做一个不。
def build_list_urls_6(page=3):	page=page+1	ret=[]	for i in range(1,page):		ret.append('http://www.cnproxy.com/proxy%(num)01d.html'%{'num':i})			return retdef parse_page_6(html=''):    matches=re.findall(r'''<tr>        <td>([^&]+)                     #ip        &#8204&#8205        \:([^<]+)                       #port        </td>        <td>HTTP</td>        <td>[^<]+</td>        <td>([^<]+)</td>                #area        </tr>''',html,re.VERBOSE)	    ret=[]    for match in matches:        ip=match[0]        port=match[1]        type=-1          #该网站未提供代理服务器类型        area=match[2]        if indebug:print '6',ip,port,type,area        area=unicode(area, 'cp936')         area=area.encode('utf8')         ret.append([ip,port,type,area])	return ret

但他的端口(port)取得也不对!

但他的端口(port)取得也不对!  function parsePort($str)
    {
        $str = str_replace('document.write(":"', '', $str);
        $str = str_replace(')', '', $str);
        $str = str_replace('+x', '8', $str);
        $str = str_replace('+f', '0', $str);
        $str = str_replace('+z', '3', $str);
        $str = str_replace('+c','1', $str);
        $str = str_replace('+a','2', $str);
        $str = str_replace('+i','3', $str);
        $str = str_replace('+l','9', $str);
        return ':'.$str;
    }

谢谢版主大人,解决了

那恭喜你了

不过你还要注意检查一下,每一页的 
<script> <br /> z="3";m="4";a="2";l="9";f="0";b="5";i="7";w="6";x="8";c="1";</script>
是否都一样

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn