精华内容
下载资源
问答
  • 解析url

    2016-04-11 19:08:19
    url进行解析,比如要从url中获取protocol、host、port、Query等信息,我们可以通过几个函数实现。parse_url() //- 返回protocol,post,port,query等信息 pathinfo() //- 返回文件路径的信息 dirname() //- 返回...

    对url进行解析,比如要从url中获取protocol、host、port、Query等信息,我们可以通过几个函数实现。

    parse_url() //- 返回protocol,post,port,query等信息
    pathinfo() //- 返回文件路径的信息
    dirname() //- 返回路径中的目录部分
    basename() //- 返回路径中的文件名部分

    1.parse_url()

    mixed parse_url ( string $url [, int $component = -1 ] )

    说明:解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

    url
    The URL to parse. Invalid characters are replaced by _.
    
    component
    指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 中指定的部分的 string;
    
    指定为 PHP_URL_PORT ,将返回一个 integer 的值。
    

    2.pathinfo()

    mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

    说明:返回文件路径信息

    path
    要解析的路径。
    
    options
    如果指定,将会返回指定元素;包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME。
    
    如果没有指定 options 默认返回全部的单元。

    3.basename()

    string basename ( string $path [, string $suffix ] )

    说明:返回路径中的文件名信息

    path
    路径,在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
    
    suffix
    如果文件名是以 suffix 结束的,那这一部分也会被去掉。

    4.dirname()

    string dirname ( string $path )

    说明:返回去掉文件名后的目录名

    path
    路径,在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。

    假设$url = ‘https://www.google.com:80/search?q=php&sourceid=chrome&ie=UTF-8‘;

    四个函数结果如下:

    urlparse

    展开全文
  • 解析jdbcUrl,获取databaseName public class JdbcUrlUtil { public static String findDataBaseNameByUrl(String jdbcUrl) { String database = null; int pos, pos1; String connUri; ...

    解析jdbcUrl,获取databaseName

    public class JdbcUrlUtil {
        public static String findDataBaseNameByUrl(String jdbcUrl) {
            String database = null;
            int pos, pos1;
            String connUri;
    
            if (StringUtils.isBlank(jdbcUrl)) {
                throw new IllegalArgumentException("Invalid JDBC url.");
            }
    
            jdbcUrl = jdbcUrl.toLowerCase();
    
            if (jdbcUrl.startsWith("jdbc:impala")) {
                jdbcUrl = jdbcUrl.replace(":impala", "");
            }
    
            if (!jdbcUrl.startsWith("jdbc:")
                    || (pos1 = jdbcUrl.indexOf(':', 5)) == -1) {
                throw new IllegalArgumentException("Invalid JDBC url.");
            }
    
            connUri = jdbcUrl.substring(pos1 + 1);
    
            if (connUri.startsWith("//")) {
                if ((pos = connUri.indexOf('/', 2)) != -1) {
                    database = connUri.substring(pos + 1);
                }
            } else {
                database = connUri;
            }
    
            if (database.contains("?")) {
                database = database.substring(0, database.indexOf("?"));
            }
    
            if (database.contains(";")) {
                database = database.substring(0, database.indexOf(";"));
            }
    
            if (StringUtils.isBlank(database)) {
                throw new IllegalArgumentException("Invalid JDBC url.");
            }
            return database;
        }
    }

     

     

    参考

     

    public class JdbcUrlSplitter 
    { 
        public String driverName, host, port, database, params; 
    
        public JdbcUrlSplitter(String jdbcUrl) 
        { 
        int pos, pos1, pos2; 
        String connUri; 
    
        if(jdbcUrl == null || !jdbcUrl.startsWith("jdbc:") 
         || (pos1 = jdbcUrl.indexOf(':', 5)) == -1) 
         throw new IllegalArgumentException("Invalid JDBC url."); 
    
        driverName = jdbcUrl.substring(5, pos1); 
        if((pos2 = jdbcUrl.indexOf(';', pos1)) == -1) 
        { 
         connUri = jdbcUrl.substring(pos1 + 1); 
        } 
        else 
        { 
         connUri = jdbcUrl.substring(pos1 + 1, pos2); 
         params = jdbcUrl.substring(pos2 + 1); 
        } 
    
        if(connUri.startsWith("//")) 
        { 
         if((pos = connUri.indexOf('/', 2)) != -1) 
         { 
         host = connUri.substring(2, pos); 
         database = connUri.substring(pos + 1); 
    
         if((pos = host.indexOf(':')) != -1) 
         { 
          port = host.substring(pos + 1); 
          host = host.substring(0, pos); 
         } 
         } 
        } 
        else 
        { 
         database = connUri; 
        } 
        } 
    } 

     

    展开全文
  • 解析URL

    千次阅读 2016-08-18 17:35:45
    简介在github有轮子http-parser解析器,小的就不再造轮子了,哈哈(造这个轮子真不是一时半会的事)。目前该解析器用于nodejs的http解析,另还有大家熟知的tcpflow 以及 libtnet都以他作为... 这个解析器常常在高性能的H

    简介

    在github有轮子http-parser解析器,小的就不再造轮子了,哈哈(造这个轮子真不是一时半会的事)。目前该解析器用于nodejs的http解析,另还有大家熟知的tcpflow 以及 libtnet都以他作为引擎。
    http-parser地址:http-parser

    http-parser是一个用C代码编写的HTTP消息解析器。可以解析HTTP请求或者回应消息。 这个解析器常常在高性能的HTTP应用中使用。 在解析的过程中,它不会调用任何系统调用,不会在HEAP上申请内存,不会缓存数据,并且可以在任意时刻打断解析过程,而不会产生任何影响。 对于每个HTTP消息(在WEB服务器中就是每个请求),它只需要40字节的内存占用(解析器本身的基本数据结构),不过最终的要看你实际的代码架构。

    特性:

    无第三方依赖
    可以处理持久消息(keep-alive)
    支持解码chunk编码的消息
    支持Upgrade协议升级(如无例外就是WebSocket)
    可以防御缓冲区溢出攻击

    解析器可以处理以下类型的HTTP消息:

    头部的字段和值
    Content-Length
    请求方法
    返回的HTTP代码
    Transfer-Encoding
    HTTP版本
    请求的URL
    HTTP消息主体

    使用

    分为3步:
    1、初始化参数http_parser_url 结构
    2、使用http_parser_parse_url函数进行解析
    3、将解析处理的结果dump_url 拿来使用即可,然后就没有然后了。如此简洁!

     //从解析的http_parser_url 结构体中,提取相关字段
    void dump_url (const char *url, const struct http_parser_url *u)
    {
      unsigned int i;
    
      printf("\tfield_set: 0x%x, port: %u\n", u->field_set, u->port);
      for (i = 0; i < UF_MAX; i++) {
        if ((u->field_set & (1 << i)) == 0) {
          printf("\tfield_data[%u]: unset\n", i);
          continue;
        }
    
        printf("\tfield_data[%u]: off: %u, len: %u, part: %.*s\n",
               i,
               u->field_data[i].off,
               u->field_data[i].len,
               u->field_data[i].len,
               url + u->field_data[i].off);
      }
    }
    
    int main(int argc, char ** argv) {
      struct http_parser_url u;
      int len, connect, result;
    
      if (argc != 3) {
        printf("Syntax : %s connect|get url\n", argv[0]);
        return 1;
      }
      len = strlen(argv[2]);
      connect = strcmp("connect", argv[1]) == 0 ? 1 : 0;
      printf("Parsing %s, connect %d\n", argv[2], connect);
    
      http_parser_url_init(&u);//初始化 -- 步骤1
      //URL参数,长度,是否为connect模式,返回结果(http_parser_url )
      result = http_parser_parse_url(argv[2], len, connect, &u);//步骤2
      if (result != 0) {
        printf("Parse error : %d\n", result);
        return result;
      }
      printf("Parse ok, result : \n");
      dump_url(argv[2], &u);//步骤3
      return 0;
    }

    注意:当为connect模式时,需要为主机名+端口号


    测试 1

    [root@ide_81 test_code]# ./url_parser get http://blog.csdn.net/njust_ecjtu/article/details/40453577
    Parsing http://blog.csdn.net/njust_ecjtu/article/details/40453577, connect 0
    Parse ok, result : 
            field_set: 0xb, port: 0
            field_data[0]: off: 0, len: 4, part: http
            field_data[1]: off: 7, len: 13, part: blog.csdn.net
            field_data[2]: unset
            field_data[3]: off: 20, len: 37, part: /njust_ecjtu/article/details/40453577
            field_data[4]: unset
            field_data[5]: unset
            field_data[6]: unset
     解析出协议,主机名,路径,均是原BUF的偏移
    


    测试2

    [root@ide_81 test_code]# ./url_parser connect blog.csdn.net:80
    Parsing blog.csdn.net:80, connect 1
    Parse ok, result : 
            field_set: 0x6, port: 80
            field_data[0]: unset
            field_data[1]: off: 0, len: 13, part: blog.csdn.net
            field_data[2]: off: 14, len: 2, part: 80
            field_data[3]: unset
            field_data[4]: unset
            field_data[5]: unset
            field_data[6]: unset
            解析出地址与端口号,均是原BUF的偏移,0 copy

    http_parser_url中仅是记录了解析URL中各字段的起始位置以及长度,0 COPY,速度极快。支持SCHEMA、PORT、HOST、PATH、QUERY、USERINFO、FRAGMENT七种信息的提取。 – 在web服务器,抓包分析,代理中,可以借鉴使用。

    参考

    http://blog.rootk.com/post/tutorial-for-http-parser.html

    展开全文
  • 解析URL 解析 URL 对象有以下内容,依赖于他们是否在 URL 字符串里存在。任何不在 URL 字符串里的部分,都不会出现在解析对象里 ‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash’ ┌────────...
  • Java 解析URL

    2020-04-18 18:13:00
    使用 net.URL 类的 url.getProtocol() ,url.getFile() 等方法来解析 URL 地址 完整代码 import java.net.URL; public class Main { public static void main(String[] args) throws Exception { URL url = new...
    使用 net.URL 类的 url.getProtocol() ,url.getFile() 等方法来解析 URL 地址

    完整代码

    import java.net.URL;
     
    public class Main {
       public static void main(String[] args) 
       throws Exception {
          URL url = new URL("http://www.baidu.com/html/html-tutorial.html");
          System.out.println("URL 是 " + url.toString());
          System.out.println("协议是 " + url.getProtocol());
          System.out.println("文件名是 " + url.getFile());
          System.out.println("主机是 " + url.getHost());
          System.out.println("路径是 " + url.getPath());
          System.out.println("端口号是 " + url.getPort());
          System.out.println("默认端口号是 " 
          + url.getDefaultPort());
       }
    }
    

    结果如下

    URL 是 http://www.baidu.com/html/html-tutorial.html
    协议是 http
    文件名是 /html/html-tutorial.html
    主机是 www.baidu.com
    路径是 /html/html-tutorial.html
    端口号是 -1
    默认端口号是 80
    

    在这里插入图片描述

    展开全文
  • java解析URL

    千次阅读 2013-10-03 08:50:05
    一个URL对象生成后,其属性是不能被改变的,但是我们可以通过类URL所提供... public String getHost() 获取该URL的主机名。  public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1。  public Strin
  • 使用http_parser解析URL

    万次阅读 2013-05-21 12:58:49
    用C语言编写http应用,解析URL是一个繁琐的事儿。前几天使用http_parser实现httpclient,发现里面提供了一个解析URL的方法http_parser_parse_url,用起来相当方便。 http_parser_parse_url通过分析URL字符串,把...
  • URL : 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme = 通信协议 (常用的http,ftp,maito等) host = 主机 (域名或IP) port = 端口号...
  • PHP解析URL的函数parse_url

    千次阅读 2018-08-09 08:58:08
    parse_url解析 URL,返回其组成部分 mixed parse_url ( string $url [, int $component = -1 ] ) 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分(就是不完整的 URL 也被接受) 对...
  • js解析url

    千次阅读 2019-06-05 14:22:24
    window.location.host ——主机名和当前 URL 的端口号 window.location.hostname ——当前 URL 的主机名 window.location.href ——完整的 URL window.location.pathname ——当前 URL 的路径部分 windo...
  • C语言 解析URL

    千次阅读 2017-03-18 22:14:09
    最近需要用到解析一个URL的合法性,找了半天发现C语言没有解析URL的库函数, 那么只好自己去写了。 在网上找了一段代码,非常好,亲测有效,特来分享! 转载地址:...
  • 在我们日常工作中,由于办公网络的限制,连接外网访问时需要指定...于是根据java.net.URL的api整理了设置代理服务器和自定义Host头绕过DNS解析的方法: 代码如下: public static void main(String[] args) thr
  • 本文主要向大家介绍了php中2个解析URL的方法(parse_url和parse_str),以及这2种方法的简介和用法,十分全面,推荐给有需要的小伙伴们。 PHP中有两个方法可以用来解析URL,分别是parse_url和parse_str。...
  • 使用http parser解析URL

    千次阅读 2018-11-12 14:26:08
    使用http parser解析URL
  • JS解析URL

    千次阅读 2014-08-27 15:30:29
    js解析url 输入:http://www.js-51.com/news/2012-5/GUANLIRUANJIANYAOBUYAOBAYIYONGXINGFANGZAIZHONGYAOWEIZHI.html?q=all&l=zh-cn#go 1 href 全部URl字符串(在浏览器中就是完整的地址栏) 返回: ...
  • 解析URL对象

    千次阅读 2014-12-05 14:01:41
    public Sytring getProtocol() 获取URL协议名;...public String getHost() 获取该URL的域名; public int getPort() 获取该URL的端口号,如果没有端口号,则返回-1; public String getFile() 获得该URL的文件名 pu
  • parse_url()解析url

    千次阅读 2012-11-08 11:29:50
    // php解析url,返回其组成部分,函数:parse_url() URL: http://username:password@hostname/path?arg=value#anchor var_dump(parse_url($url)); array(7) { ["scheme"]=> string(4) "http" ["host"]=> ...
  • 本文给大家介绍php解析url并得到url中的参数及获取url参数的四种方式,涉及到将字符串参数变为数组,将参数变为字符串的相关知识,本文代码简单易懂,感兴趣的朋友一起看看吧 下面一段代码是php解析url并得到url中...
  • urlparse解析url

    千次阅读 2018-06-07 15:21:57
    urlparse()把url拆分为6个部分,scheme(协议),netloc(域名),path(路径),params(可选参数),query(连接键值对),fragment(特殊锚),并且以元组形式返回。 urlparse()具体怎么分析url呢,看看下面这个例子你就能...
  • node解析url网址

    2018-11-08 10:53:53
    使用url.parse()方法来将url解析成一个对象 在命令行输入url.parse('网址‘),必须牢记 Url { protocol: 'http:', // 指的是底层使用的协议是http slashes: true, // 说明是否有协议的双斜线 a...
  • php 解析url获取参数

    千次阅读 2019-10-24 12:08:54
    我们可以使用php自带的... 1:parse_url方法是解析url并返回url的组成部分,例: $url = 'https://www.wj0511.com/site/index.html?page=3&per-page=10'; var_dump(parse_url($url)); 返回结果如: arra...
  • java.net解析URL

    千次阅读 2011-11-08 15:27:48
    统一资源定位符(URL,UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。...我们可以直接使用URL类提供的方法来解析URL。 示例: package com.xmetc.lhg; import java.net
  • js解析URL方法

    2012-07-27 12:05:24
    URL: 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme = 通信协议 (常用的http,ftp,maito等) host = 主机 (域名或IP) port = ...
  • host 主机名和当前 URL 的端口号 hostname 当前 URL 的主机名 href 完整的 URL pathname 当前 URL 的路径部分 port 当前 URL 的端口号 protocol 当前 URL 的协议 s...
  • 解析url地址的函数

    千次阅读 2018-07-19 21:41:10
    写一个解析url地址的函数,要求出来协议,主机,端口,路径,参数等信息。 例:https://php.com:8080/path/?action=login&amp;a=user&amp;b=pass#name; 输出为一个数组 如下: scheme:协议名; ...
  • 浅谈PHP解析URL函数parse_url和parse_str

    千次阅读 2017-06-22 15:10:50
    PHP中有两个方法可以用来解析URL,分别是parse_url和parse_str。 parse_url 解析 URL,返回其组成部分 mixed parse_url ( string $url [, int $component = -1 ] ) 本函数解析一个 URL 并返回一个关联数组,包含...
  • URLurl.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 参数 说明 urlStr 网址 parseQueryString 是否把query通过... 如果为 true,则 // 之后至下一个 / 之前的字符串会被解析作为 host。 例如,
  • URL解析

    2018-02-11 17:26:00
    URL : 统一资源定位符(Uniform Resource Locator ),用来定位互联网上的资源位置。 统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上...scheme://host:port/path?q...
  • parse_url解析 URL,返回其组成部分

    千次阅读 2010-10-09 12:53:00
    parse_url (PHP 4, PHP 5) parse_url解析 URL,返回其组成部分 说明 array parse_url ( string $url ) 本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,783
精华内容 51,513
关键字:

解析url的host