澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站:JS发送http乞求批量检查

在node.js中只需要几行代码就可以发送http请求,通过检查statusCode可以判断该网址服务是否有效。

我们有时候需要对用户输入的网站(URL)进行有效性检查,

爬虫的基本概念


关于爬虫的基本概念, 推荐博客https://xlzd.me/ 里面关于爬虫的介绍非常通俗易懂.
简单地说,在我们输入网址后到可以浏览网页,中间浏览器做了很多工作, 这里面涉及到两个概念:

  • IP地址: IP地址是你在网络上的地址,大部分情况下它的表示是一串类似于192.168.1.1的数字串。访问网址的时候,事实上就是向这个IP地址请求了一堆数据。
  • DNS服务器: 而DNS服务器则是记录IP到域名映射关系的服务器,爬虫在很大层次上不关系这一步的过程。一般浏览器并不会直接向DNS服务器查询的IP,这个过程要复杂的多,包括向浏览器自己、hosts文件等很多地方先查找一次,上面的说法只是一个统称。
    浏览器得到IP地址之后,浏览器就会向这个地址发送一个HTTP请求。然后从网站的服务器端请求到了首页的HTML源码,然后通过浏览器引擎解析源码,再次向服务器发请求得到里面引用过的Javascript、CSS、图片等资源,得到了网页浏览时的样子。

PHP 是目前使用最广泛的基于 Web 的编程语言,驱动着数以百万计的网站,其中也包括如 Facebook 等一些大型站点。这里收集了 21 段实用便捷的 PHP 代码摘录,对每种类型的 PHP 开发者都会有所帮助。

1.在浏览器中输入url地址

用户输入url地址后,例如 http://www.baidu.com , 其中http为协议,www.baidu.com为域名,

var http = requirevar checkExists = function { var options = { host: '192.168.2.101', port: 8064, path: encodeURI} var req = http.request { cb && cb; }) req.end()}

 代码如下

搭建实验环境

import requests # 网页下载工具
from bs4 import BeautifulSoup # 分析网页数据的工具
import re # 正则表达式,用于数据清洗整理等工作
import os # 系统模块,用于创建结果文件保存等
import codecs # 用于创建结果文件并写入

2 爬虫的实现
编写爬虫之前,我们需要先思考爬虫需要干什么、目标网站有什么特点,以及根据目标网站的数据量和数据特点选择合适的架构。
推荐使用Chrome的开发者工具来观察网页结构。对应的快捷键是"F12"。
右键选择检查(inspect)即可查看选中条目的HTML结构。

一般,浏览器在向服务器发送请求的时候,会有一个请求头——User-Agent,它用来标识浏览器的类型.
如果是python代码直接爬,发送默认的User-Agent是python-requests/[版本号数字]
这时可能会请求失败,因为服务器会设置通过校验请求的U-A来识别爬虫,通过模拟浏览器的U-A,能够很轻松地绕过这个问题。
设置Use-Agent请求头, 在代码'User-Agent':后就是虚拟的浏览器请求头.

def fetch_html(url_link):
    html = requests.get(url_link, 
                    headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'}).content
return html

DOWNLOAD_URL = 'http://usefulenglish.ru/phrases/'
html = fetch_html(DOWNLOAD_URL)

上面这段代码可以将url_link中网址的页面信息全部下载到变量html中.
之后调用Beautifulsoup解析html中的数据.

#!/usr/bin/python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://www.jb51.net" class="sister" id="link1">Elsie</a>,
<a href="http://www.jb51.net" class="sister" id="link2">Lacie</a> and
<a href="http://www.jb51.net" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup = BeautifulSoup(html_doc) 
print soup.title # 输出:<title>The Dormouse's story</title>
print soup.title.name # 输出:title
print soup.title.string # 输出: The Dormouse's story
print soup.p # 输出: <p class="title"><b>The Dormouse's story</b></p>
print soup.a # 输出:<a class="sister" href="http://www.jb51.net" id="link1">Elsie</a>
print soup.find_all('a') 
print soup.find(id='link3')
print soup.get_text()

soup 就是BeautifulSoup处理格式化后的字符串
soup.title得到的是title标签
soup.p 得到的是文档中的第一个p标签
soup.find_all(‘p’) 遍历树, 得到所有的标签’p’匹配结果
get_text() 是返回文本, 其实是可以获得标签的其他属性的,比如要获得a标签的href属性的值,可以使用 print soup.a['href'],类似的其他属性,比如class也可以这么得到: soup.a['class'])

用Beautifulsoup解析html文件, 就可以获得需要的网址数据等文件. 下面这段代码是用来获取字段中的url链接的:

def findLinks(htmlString):
    """
    搜索htmlString中所有的有效链接地址,方便下次继续使用
    htmlString = ‘<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>'类似的字符串
    """
    linkPattern = re.compile("(?<=href="). ?(?=")|(?<=href='). ?(?=')")
    return linkPattern.findall(htmlString)

1. 可阅读随机字符串

2.DNS解析域名

浏览器的本意是要通过网址来找到目标资源所在的计算机或服务器的ip地址,但是并不能直接通过域名在找到目标网址,在这里我们要先对域名进行解析,浏览器会现在浏览器的缓存中查找是否有域名所对应的ip地址,如果没有在系统缓存中查找,如果还没有浏览器会向路由器发送一个tpc或是udp协议,端口号为53,(在我们初次浏览网页的时候,路由器会记录下当前网址的域名与ip地址的对应关系),如果还没有的情况下,浏览器就会想DNS服务器发送请求,在DNS服务器中存储着所有域名与ip地址的对应关系,域名服务器接收到请求后会向客户端响应对应ip地址

以上代码检查相对网址是否可用,需手动修改服务器地址和端口,使用以下代码可以检查完整地址的可用性。

复制代码

正则表达式

实际使用中,用Beautifulsoup应该可以处理绝大多数需求,但是如果需要对爬去下来的数据再进一步分析的话,就要用到正则表达式了.

大多数符号在正则表达式中都有特别的含义,所以要作为匹配模式的话,就必须要用符号转义.例如搜索'/a', 对应的正则表达式是'/a'
[]代表匹配里面的字符中的任意一个
[^]代表除了内部包含的字符以外都能匹配,例如pattern1 = re.compile("[^p]at")#这代表除了p以外都匹配
正则表达式中()内的部分是通过匹配提取的字段.

基本用法,例如得到的url字符串后,需要截取最后一个/符号后的字段作为保存的文件名:

topic_url='http://usefulenglish.ru/phrases/bus-taxi-train-plane'
filename_pattern=re.compile('.*/(.*)$')
filename = filename_pattern.findall(topic_url)[0] '.txt'

得到:
filename = 'bus-taxi-train-plane.txt'

最后给出完整代码. 这段代码实现了对英文学习网站()中phrase栏目下日常口语短语的提取.代码的功能主要分为两部分:
1)解析侧边栏条目的url地址, 保存在url_list中
2)下载url_list中网页正文列表中的英文句子.
网站页面如下:

澳门新浦京娱乐场网站 1

image.png

import requests
from bs4 import BeautifulSoup
import re
import os
import codecs

def findLinks(htmlString):
    """
    搜索htmlString中所有的有效链接地址,方便下次继续使用
    """
    linkPattern = re.compile("(?<=href="). ?(?=")|(?<=href='). ?(?=')")
    return linkPattern.findall(htmlString)

def fetch_html(url_link):
    html = requests.get(url_link, 
                    headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'}).content
    return html

DOWNLOAD_URL = 'http://usefulenglish.ru/phrases/'

html = fetch_html(DOWNLOAD_URL)

soup = BeautifulSoup(html, "lxml")

side_soup = soup.find('div', attrs={'id': 'sidebar'})

url_pattern = re.compile('^[<a]')
start = 0
url_list = []
for items in side_soup.find_all('li'):
    if url_pattern.findall(str(items)):
        url = findLinks(str(items))
        if url == []:
            start = start   1
            continue
        else:
            if start == 1:
                url_list.append(url[0])
            else:
                continue

filename_pattern=re.compile('.*/(.*)')

for topic_url in url_list[5]:
    html = []
    soup = []
    page_soup = []
#    topic_url = 'http://usefulenglish.ru/phrases/time'
    print(topic_url)
    html = fetch_html(topic_url)
#    print(html)
    soup = BeautifulSoup(html)
    page_soup = soup.find('div', attrs={'class':'body'})
#    print(page_soup)

    filename = filename_pattern.findall(topic_url)[0] '.txt'
#    print(filename)
    if not os.path.exists(filename):
        os.system('touch %s' % filename)

    outfile = codecs.open(filename, 'wb', encoding='utf-8')
    ftext = []

    pattern = re.compile('^[a-zA-Z]')

    for table_div in page_soup.find_all('p'):
        text = table_div.getText()
        if pattern.findall(text):
            line = re.sub('(.*)|?|.|/|,','', text)
            ftext.append(line)

    with codecs.open(filename, 'wb', encoding='utf-8') as fp:
        fp.write('{ftext}n'.format(ftext='n'.join(ftext)))

此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。

3.客户端发送HTTP请求

http请求包含请求头和请求体两部分,请求头中包含着请求方式(get|post),目标url,遵循的协议(http|https),反悔的信息是否需要缓存,以及客户端是否发送cookie;

 var http = requirevar url = requirevar checkUrlExists = function  { var options = { //method: 'HEAD', host: url.parse.host, port: 80, path: url.parse.pathname }; var req = http.request { cb && cb; }); req.end();}

function CheckUrl(str) {
    var RegUrl = new RegExp();
    RegUrl.compile("^[A-Za-z] ://[A-Za-z0-9-_] .[A-Za-z0-9-_%&?/.=] $");
    if (!RegUrl.test(str)) {
        return false;
    }
    return true;
}

附录: 正则表达式


澳门新浦京娱乐场网站 2

参考:
使用request爬:https://zhuanlan.zhihu.com/p/20410446
爬豆瓣电影top250(网页列表中的数据):
https://xlzd.me/2015/12/16/python-crawler-03
Beautifulsoup使用方法详解: http://www.jb51.net/article/43572.htm
Beautifulsoup官网文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc/
http://www.169it.com/article/9913111281939258943.html
Python正则表达式:
http://www.runoob.com/python/python-reg-expressions.html
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
    $conso=array("b","c","d","f","g","h","j","k","l",
    "m","n","p","r","s","t","v","w","x","y","z");
    $vocal=array("a","e","i","o","u");
    $password="";
    srand ((double)microtime()*1000000);
    $max = $length/2;
    for($i=1; $i<=$max; $i  )
    {
    $password.=$conso[rand(0,19)];
    $password.=$vocal[rand(0,4)];
    }
    return $password;
}

4.传输层TCP传输报文

位于传输层的TCP协议为传输报文提供可靠的字节流服务。它为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理,并为它们编号,方便服务器接收时能准确地还原报文信息。TCP协议通过“三次握手”等方法保证传输的安全可靠。

“三次握手”的过程是,发送端先发送一个带有SYN(synchronize)标志的数据包给接收端,在一定的延迟时间内等待接收的回复。接收端收到数据包后,传回一个带有SYN/ACK标志的数据包以示传达确认信息。接收方收到后再发送一个带有ACK标志的数据包给接收端以示握手成功。在这个过程中,如果发送端在规定延迟时间内没有收到回复则默认接收方没有收到请求,而再次发送,直到收到回复为止。

搭配 fs 模块,可以指解析文件中的地址是否可用,完整代码如下:

不止从格式上,更要检查用户输入的网址是否真正有效。检查URL可以参考js正则表达式验证网址格式,检查URL有效的方法有很多,例如你可以使用jQuery进行检查,

2. 生成一个随机字符串

5.网络层IP协议查询MAC地址

IP协议的作用是把TCP分割好的各种数据包传送给接收方。而要保证确实能传到接收方还需要接收方的MAC地址,也就是物理地址。IP地址和MAC地址是一一对应的关系,一个网络设备的IP地址可以更换,但是MAC地址一般是固定不变的。ARP协议可以将IP地址解析成对应的MAC地址。当通信的双方不在同一个局域网时,需要多次中转才能到达最终的目标,在中转的过程中需要通过下一个中转站的MAC地址来搜索下一个中转目标。

var http = requirevar url = requirevar fs = require/*检查完整网址是否可用*/var checkUrlExists = function  { var options = { //method: 'HEAD', host: url.parse.host, port: 80, path: url.parse.pathname }; var req = http.request { cb && cb; }); req.end();}/*检查相对网址是否可用,需修改服务器地址和端口*/var checkExists = function { var options = { host: '192.168.2.101', port: 8064, path: encodeURI} var req = http.request { cb && cb; }) req.end()}var checkFile = function { fs.readFile(filePath, function { console.log return } var lines = data.toString var curr = 0 var urlPath var checkNext = function { if (curr > lines.length - 1) { console.log return } //console.log(curr, 'exist', exist, urlPath) if  { console.log(curr, 'exist', exist, urlPath) } if  { console.log return } urlPath = lines[curr  ] checkExists } checkNext}checkFile

本篇将给出一段使用C#判断网址是否有效的代码。

澳门新浦京娱乐场网站:JS发送http乞求批量检查文件中的网页地址,爬二个英农学习网址。如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。

6.数据到达数据链路层

在找到对方的MAC地址后,就将数据发送到数据链路层传输。这时,客户端发送请求的阶段结束

总结

下边是检查URL有效性的方法:

/*************
*@l - length of random string
*/
function generate_rand($l){
  $c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
  for($i=0; $i<$l; $i  ) {
      $rand.= $c[rand()%strlen($c)];
  }
  return $rand;
 }

7.服务器接收数据

接收端的服务器在链路层接收到数据包,再层层向上直到应用层。这过程中包括在运输层通过TCP协议讲分段的数据包重新组成原来的HTTP请求报文。

以上所述是小编给大家介绍的Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 代码如下

3. 编码电子邮件地址

8.服务器响应请求

服务接收到客户端发送的HTTP请求后,查找客户端请求的资源,并返回响应报文,响应报文中包括一个重要的信息——状态码。状态码由三位数字组成,其中比较常见的是200 OK表示请求成功。301表示永久重定向,即请求的资源已经永久转移到新的位置。在返回301状态码的同时,响应报文也会附带重定向的url,客户端接收到后将http请求的url做相应的改变再重新发送。404 not found 表示客户端请求的资源找不到。

复制代码

使用此代码,可以将任何电子邮件地址编码为 HTML 字符实体,以防止被垃圾邮件程序收集。

9.服务器返回相应文件

请求成功后,服务器会返回相应的HTML文件。接下来就到了页面的渲染阶段了。

private bool UrlCheck(string strUrl)
{
    if (!strUrl.Contains("http://") && !strUrl.Contains("https://"))
    {
        strUrl = "http://" strUrl;
    }
    try
    {
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
        myRequest.Method = "HEAD";
        myRequest.Timeout = 10000;  //超时时间10秒
        HttpWebResponse res = (HttpWebResponse)myRequest.GetResponse();
        return (res.StatusCode == HttpStatusCode.OK);
    }
    catch
    {
        return false;
    }
}

function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
    // remplazar aroba y puntos
    $email = str_replace('@', '&#64;', $email);
    $email = str_replace('.', '&#46;', $email);
    $email = str_split($email, 5);  

    $linkText = str_replace('@', '&#64;', $linkText);
    $linkText = str_replace('.', '&#46;', $linkText);
    $linkText = str_split($linkText, 5);  

    $part1 = '<a href="ma';
    $part2 = 'ilto&#58;';
    $part3 = '" '. $attrs .' >';
    $part4 = '</a>';  

    $encoded = '<script type="text/javascript">';
    $encoded .= "document.write('$part1');";
    $encoded .= "document.write('$part2');";
    foreach($email as $e)
    {
            $encoded .= "document.write('$e');";
    }
    $encoded .= "document.write('$part3');";
    foreach($linkText as $l)
    {
            $encoded .= "document.write('$l');";
    }
    $encoded .= "document.write('$part4');";
    $encoded .= '</script>';  

    return $encoded;
}

10.页面渲染

现代浏览器渲染页面的过程是这样的:jiexiHTML以构建DOM树 –> 构建渲染树 –> 布局渲染树 –> 绘制渲染树。

DOM树是由HTML文件中的标签排列组成,渲染树是在DOM树中加入CSS或HTML中的style样式而形成。渲染树只包含需要显示在页面中的DOM元素,像<head>元素或display属性值为none的元素都不在渲染树中。

在浏览器还没接收到完整的HTML文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送HTTP请求重复上述的步骤。在收到CSS文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相应位置。在这一过程中可能会触发页面的重绘或重排。

使用时,我们只需传入Url即可进行有效性检查,使用这个方法时记得加上System.Net命名空间。

4. 验证邮件地址

 代码如下

电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。

复制代码

function is_valid_email($email, $test_mx = false)
{
    if(eregi("^([_a-z0-9-] )(.[_a-z0-9-] )*@([a-z0-9-] )(.[a-z0-9-] )*(.[a-z]{2,4})$", $email))
        if($test_mx)
        {
            list($username, $domain) = split("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        else
            return true;
    else
        return false;
}

if (!UrlCheck(""))
{
    //删除操作
}

5. 列出目录内容

是的,在本站中用户可以输入自己的网址,但有的用户不知道是为了测试还是什么,输入了一眼就能看出是访问不了的链接。所以有必要对用户输入的网址做个检查,不然无效链接太多的话会影响网站的权重,更重要的是过多的无效链接会影响其他用户的体验,因为谁也不想点击一个无效的链接。

function list_files($dir)
{
    if(is_dir($dir))
    {
        if($handle = opendir($dir))
        {
            while(($file = readdir($handle)) !== false)
            {
                if($file != "." && $file != ".." && $file != "Thumbs.db")
                {
                    echo '<a target="_blank" href="'.$dir.$file.'">'.$file.'</a><br>'."n";
                }
            }
            closedir($handle);
        }
    }
}

可以参考jQuery  Ajax,

6. 销毁目录

以下5个方法执行一般Ajax请求的简短形式,在处理复杂的Ajax请求时应该使用jQuery.ajax().

删除一个目录,包括它的内容。

1.load(url,[data],[callback])

/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
    $ds = DIRECTORY_SEPARATOR;
    $dir = $virtual ? realpath($dir) : $dir;
    $dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
    if (is_dir($dir) && $handle = opendir($dir))
    {
        while ($file = readdir($handle))
        {
            if ($file == '.' || $file == '..')
            {
                continue;
            }
            elseif (is_dir($dir.$ds.$file))
            {
                destroyDir($dir.$ds.$file);
            }
            else
            {
                unlink($dir.$ds.$file);
            }
        }
        closedir($handle);
        rmdir($dir);
        return true;
    }
    else
    {
        return false;
    }
}

载入远程HTML文件代码并插入至DOM中,默认使用GET方式,传递参数时自动转换为POST方式。

7. 解析 JSON 数据

◦url:要载入的远程url地址
◦data:发送至服务器的key/value 数据
◦callback:载入成功时的回调函数

与大多数流行的 Web 服务如 Twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。

示例代码如下:

$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} ';
$obj=json_decode($json_string);
echo $obj->name; //prints foo
echo $obj->interest[1]; //prints php

 代码如下

8. 解析 XML 数据

复制代码

//xml string
$xml_string="<?xml version='1.0'?>
<users>
   <user id='398'>
      <name>Foo</name>
      <email>foo@bar.com</name>
   </user>
   <user id='867'>
      <name>Foobar</name>
      <email>foobar@foo.com</name>
   </user>
</users>";  

//load the xml string using simplexml
$xml = simplexml_load_string($xml_string);  

//loop through the each node of user
foreach ($xml->user as $user)
{
   //access attribute
   echo $user['id'], '  ';
   //subnodes are accessed by -> operator
   echo $user->name, '  ';
   echo $user->email, '<br />';
}

澳门新浦京娱乐场网站,//无参数、无回调函数
$("#showload").load("load.htm");
//无回调函数
$("#showload").load("load.htm", { "para": "para-value" });
$("#showload").load("load.htm", { "para": "para-value" },
    function() {
        //处理
    })

9. 创建日志缩略名

 

创建用户友好的日志缩略名。

你可能感兴趣的文章

function create_slug($string){
    $slug=preg_replace('/[^A-Za-z0-9-] /', '-', $string);
    return $slug;
}

asp.net检查服务器上目录或文件是否存在示例

10. 获取客户端真实 IP 地址

asp.net检查验证字符串是否为纯数字方法小结

该函数将获取用户的真实 IP 地址,即便他使用代理服务器。

asp.net ajax检查用户名是否存在代码

function getRealIpAddr()
{
    if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
    //to check ip is pass from proxy
    {
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

asp.net 检查文件夹和文件是否存在

11. 强制性文件下载

asp.net C 否为数字及有效性检查

为用户提供强制性的文件下载功能。

asp.net提示 该字符串未被识别为有效的 DateTime

/********************
*@file - path to file
*/
function force_download($file)
{
    if ((isset($file))&&(file_exists($file))) {
       header("Content-length: ".filesize($file));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $file . '"');
       readfile("$file");
    } else {
       echo "No file selected";
    }
}

asp.net实现检测电脑是否联网api程序

12. 创建标签云

asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)

function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
{
    $minimumCount = min( array_values( $data ) );
    $maximumCount = max( array_values( $data ) );
    $spread       = $maximumCount - $minimumCount;
    $cloudHTML    = '';
    $cloudTags    = array();  

    $spread == 0 && $spread = 1;  

    foreach( $data as $tag => $count )
    {
        $size = $minFontSize   ( $count - $minimumCount )
            * ( $maxFontSize - $minFontSize ) / $spread;
        $cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'
        . '" href="#" title="'' . $tag  .
        '' returned a count of ' . $count . '">'
        . htmlspecialchars( stripslashes( $tag ) ) . '</a>';
    }  

    return join( "n", $cloudTags ) . "n";
}
/**************************
****   Sample usage    ***/
$arr = Array('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43,
    'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42,
    'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode' => 12, 'Encryption' => 30,
    'Extract' => 28, 'Filters' => 42);
echo getCloud($arr, 12, 36);

asp.net中C# WinForm 判断窗体控件是否修改过

13. 寻找两个字符串的相似性

asp.net ajax 检测用户名是否可用代码

PHP 提供了一个极少使用的 similar_text 函数,但此函数非常有用,用于比较两个字符串并返回相似程度的百分比。

asp.net ajax 检测用户名是否可用代码

similar_text($string1, $string2, $percent);
//$percent will have the percentage of similarity

asp.net iis URLRewrite 实现方法详解

14. 在应用程序中使用 Gravatar 通用头像

随着 WordPress 越来越普及,Gravatar 也随之流行。由于 Gravatar 提供了易于使用的 API,将其纳入应用程序也变得十分方便。

/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/
function show_gravatar($email, $size, $default, $rating)
{
    echo '<img src="http://www.bonzeragro.com/uploads/allimg/191124/0J94V217-2.jpg'.md5($email).
        '&default='.$default.'&size='.$size.'&rating='.$rating.'" width="'.$size.'px"
        height="'.$size.'px" />';
}

15. 在字符断点处截断文字

所谓断字 (word break),即一个单词可在转行时断开的地方。这一函数将在断字处截断字符串。

// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
function myTruncate($string, $limit, $break=".", $pad="...") {
    // return with no change if string is shorter than $limit
    if(strlen($string) <= $limit)
        return $string;   

    // is $break present between $limit and the end of the string?
    if(false !== ($breakpoint = strpos($string, $break, $limit))) {
        if($breakpoint < strlen($string) - 1) {
            $string = substr($string, 0, $breakpoint) . $pad;
        }
    }
    return $string;
}
/***** Example ****/
$short_string=myTruncate($long_string, 100, ' ');

16. 文件 Zip 压缩

/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
    //if the zip file already exists and overwrite is false, return false
    if(file_exists($destination) && !$overwrite) { return false; }
    //vars
    $valid_files = array();
    //if files were passed in...
    if(is_array($files)) {
        //cycle through each file
        foreach($files as $file) {
            //make sure the file exists
            if(file_exists($file)) {
                $valid_files[] = $file;
            }
        }
    }
    //if we have good files...
    if(count($valid_files)) {
        //create the archive
        $zip = new ZipArchive();
        if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
            return false;
        }
        //add the files
        foreach($valid_files as $file) {
            $zip->addFile($file,$file);
        }
        //debug
        //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;  

        //close the zip -- done!
        $zip->close();  

        //check to make sure the file exists
        return file_exists($destination);
    }
    else
    {
        return false;
    }
}
/***** Example Usage ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);

17. 解压缩 Zip 文件

/**********************
*@file - path to zip file
*@destination - destination directory for unzipped files
*/
function unzip_file($file, $destination){
    // create object
    $zip = new ZipArchive() ;
    // open archive
    if ($zip->open($file) !== TRUE) {
        die (’Could not open archive’);
    }
    // extract contents to destination directory
    $zip->extractTo($destination);
    // close archive
    $zip->close();
    echo 'Archive extracted to directory';
}

18. 为 URL 地址预设 http 字符串

有时需要接受一些表单中的网址输入,但用户很少添加 http:// 字段,此代码将为网址添加该字段。

if (!preg_match("/^(http|ftp):/", $_POST['url'])) {
   $_POST['url'] = 'http://'.$_POST['url'];
}

19. 将网址字符串转换成超级链接

该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。

function makeClickableLinks($text) {
 $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_ .~#?&//=] )',
 '<a href="1">1</a>', $text);
 $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_ .~#?&//=] )',
 '1<a href="http://2">2</a>', $text);
 $text = eregi_replace('([_.0-9a-z-] @([0-9a-z][0-9a-z-] .) [a-z]{2,3})',
 '<a href="mailto:1">1</a>', $text);  

return $text;
}

20. 调整图像尺寸

创建图像缩略图需要许多时间,此代码将有助于了解缩略图的逻辑。

/**********************
*@filename - path to the image
*@tmpname - temporary path to thumbnail
*@xmax - max width
*@ymax - max height
*/
function resize_image($filename, $tmpname, $xmax, $ymax)
{
    $ext = explode(".", $filename);
    $ext = $ext[count($ext)-1];  

    if($ext == "jpg" || $ext == "jpeg")
        $im = imagecreatefromjpeg($tmpname);
    elseif($ext == "png")
        $im = imagecreatefrompng($tmpname);
    elseif($ext == "gif")
        $im = imagecreatefromgif($tmpname);  

    $x = imagesx($im);
    $y = imagesy($im);  

    if($x <= $xmax && $y <= $ymax)
        return $im;  

    if($x >= $y) {
        $newx = $xmax;
        $newy = $newx * $y / $x;
    }
    else {
        $newy = $ymax;
        $newx = $x / $y * $newy;
    }  

    $im2 = imagecreatetruecolor($newx, $newy);
    imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);
    return $im2;
}

21. 检测 Ajax 请求

大多数的 JavaScript 框架如 jQuery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求。

if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
    //If AJAX Request Then
}else{
//something else
}

英文原稿:21 Really Useful & Handy PHP Code Snippets | Web Developer Plus

本文由澳门新浦京娱乐场网站发布于服务器,转载请注明出处:澳门新浦京娱乐场网站:JS发送http乞求批量检查