标签: url-parsing

Firefox中的window.location.hash问题

请考虑以下代码:

hashString = window.location.hash.substring(1);
alert('Hash String = '+hashString);
Run Code Online (Sandbox Code Playgroud)

使用以下哈希运行时:

#车=镇%20%26%20Country

ChromeSafari的结果将是:

车=镇%20%26%20Country

但在Firefox(Mac和PC)中将是:

汽车=城镇和乡村

因为我使用相同的代码来解析查询和哈希参数:

function parseParams(paramString) {

        var params = {};
            var e,
            a = /\+/g,  // Regex for replacing addition symbol with a space
            r = /([^&;=]+)=?([^&;]*)/g,
            d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
        q = paramString;

        while (e = r.exec(q))
           params[d(e[1])] = d(e[2]);

        return params;

    }
Run Code Online (Sandbox Code Playgroud)

Firefox的特质在这里打破了它:汽车座位结束了"城镇",没有国家.

有没有一种安全的方法来解析跨浏览器的哈希参数,或修复Firefox如何读取它们?


注意:此问题仅限于Firefox解析HASH参数.使用查询字符串运行相同的测试时:

queryString = window.location.search.substring(1);
alert('Query String = '+queryString);
Run Code Online (Sandbox Code Playgroud)

所有浏览器都会显示:

车=镇%20%26%20Country

javascript hash firefox url-parsing url-parameters

5
推荐指数
1
解决办法
5121
查看次数

如何使用javascript从域中删除子域

我开始使用看起来像这样的域名:

www.exemple.com
main.testsite.com
www.ex-emple.com.ar
main.test-site.co.uk
en.tour.mysite.nl
www.ip.com
www.one.lv
Run Code Online (Sandbox Code Playgroud)

我需要删除子域以获取如下所示的值:

exemple.com
testsite.com
ex-emple.com.ar
test-site.co.uk
mysite.nl
ip.com
one.lv
Run Code Online (Sandbox Code Playgroud)

其他顶级域名:

.ac
.ad
.ae
.af
.ag
.ai
.al
.am
.ao
.aq
.ar
.as
.asia
.at
.au
.aw
.ax
.az
.ba
.bb
.bd
.be
.bf
.bg
.bh
.bi
.bj
.bm
.bn
.bo
.br
.bs
.bt
.bw
.by
.bz
.ca
.cc
.cd
.cf
.cg
.ch
.ci
.ck
.cl
.cm
.cn
.co
.co.ao
.co.ba
.co.bw
.co.cc
.co.ck
.co.cr
.co.fk
.co.id
.co.il
.co.im
.co.in
.co.jp
.co.ke
.co.kr
.co.ls …
Run Code Online (Sandbox Code Playgroud)

javascript regex dns replace url-parsing

5
推荐指数
1
解决办法
4141
查看次数

用Java解析URL

我有这样的URL:

http://test.com/testapp/test.do?test_id=1&test_name=SS

有什么方法我们只能得到这一部分

/test.do?test_id=1&test_name=SS

java url url-parsing

5
推荐指数
1
解决办法
3万
查看次数

Java URL类getPath(),getQuery()和getFile()与RFC3986 URI语法不一致

我正在编写一个半包装Java的实用程序类URL class,并且编写了许多测试用例,以验证用自定义实现包装的方法。我不理解某些URL字符串的某些Java getter的输出。

根据RFC 3986规范,路径组件定义如下:

The path is terminated by the first question mark ("?") or number sign   
("#") character, or by the end of the URI.
Run Code Online (Sandbox Code Playgroud)

查询组件的定义如下:

The query component is indicated by the first question
mark ("?") character and terminated by a number sign ("#") character
or by the end of the URI.
Run Code Online (Sandbox Code Playgroud)

我有一些测试用例,这些用例被Java视为有效的URL,但是路径,文件和查询的获取器没有返回我期望的值:

URL url = new URL("https://www.somesite.com/?param1=val1");

System.out.print(url.getPath());
System.out.println(url.getFile());
System.out.println(url.getQuery());
Run Code Online (Sandbox Code Playgroud)

上面的结果是以下输出:

//?param1=val1
param1=val1
<empty string>
Run Code Online (Sandbox Code Playgroud)

我的另一个测试用例:

URL url = new URL("https://www.somesite.com?param1=val1");

System.out.print(url.getPath()); …
Run Code Online (Sandbox Code Playgroud)

java url url-parsing rfc3986

5
推荐指数
1
解决办法
7794
查看次数

Python:加入多个组件来构建URL

我试图通过加入一些动态组件来构建一个URL.我想os.path.join()在我的案例中使用像BUT这样的URL.从研究中我发现urlparse.urljoin()了同样的事情.但是,它看起来一次只需要两个参数.

到目前为止我有以下工作,但看起来很重复:

    a = urlparse.urljoin(environment, schedule_uri)
    b = urlparse.urljoin(a, str(events_to_hours))
    c = urlparse.urljoin(b, str(events_from_date))
    d = urlparse.urljoin(c, str(api_version))
    e = urlparse.urljoin(d, str(id))
    url = e + '.json'
Run Code Online (Sandbox Code Playgroud)

输出= http://example.com/schedule/12/20160322/v1/1.json

上面的工作,我试图这样缩短:

url_join_items = [environment, schedule_uri, str(events_to_hours),
                  str(events_from_date), str(api_version), str(id), ".json"]
new_url = ""
for url_items in url_join_items:
    new_url = urlparse.urljoin(new_url, url_items)
Run Code Online (Sandbox Code Playgroud)

输出: http://example.com/schedule/.json

但第二个实现不起作用.请建议我如何解决这个或更好的方法.

编辑1:reduce解决方案的输出看起来像这样(不幸的是):输出:http://example.com/schedule/.json

python url-parsing

4
推荐指数
3
解决办法
6746
查看次数

解析像'ssh://git@gitlab.org.net:3333/org/repo.git'这样的git网址?

我怎样才能轻松地从git URL中提取主机名 ssh://git@gitlab.org.net:3333/org/repo.git

u = urlparse(s)
Run Code Online (Sandbox Code Playgroud)

给我

ParseResult(scheme='ssh', netloc='git@gitlab.org.net:3333', path='/org/repo.git', params='', query='', fragment='')
Run Code Online (Sandbox Code Playgroud)

这意味着netloc最接近我想要的东西,这给我留下了令人失望的工作量.

我应该这样做

u.netloc.split('@')[1].split(':')[0]
Run Code Online (Sandbox Code Playgroud)

或者是否有一个更好地处理它的库?

python parsing url-parsing urlparse

4
推荐指数
1
解决办法
1180
查看次数

使用 Elm 解析片段内的查询字符串

由于某些原因,我需要解析看起来格式化为查询字符串(即key=value&another_key=another_value)但位于 URL 片段中的内容,例如:

http://example.com/callback#id_token=my_long_jwt&state=some_state

如果#是 a ?,那么使用它会很容易<?>,但我不知道Url.Parser.Query当它在片段中时如何(或是否)可以使用。


我可以将片段作为String

import Url.Parser as Parser
import Url.Parser exposing ((</>))

type Route = Callback String | NotFound

route : Parser.Parser (Route -> a) a
route = Parser.map Callback (Parser.s "callback" </> fragmentWithDefault )

fragmentWithDefault : Parser.Parser (String -> a) a
fragmentWithDefault = Parser.fragment <| Maybe.withDefault "no_fragment"

toRoute : Url.Url -> Route
toRoute url = Maybe.withDefault NotFound (Url.Parser.parse route url)
Run Code Online (Sandbox Code Playgroud)

但是没有可以Url.Parser.Query …

url-parsing elm

4
推荐指数
1
解决办法
525
查看次数

如何获取URL路径中的子目录?

我正在寻找一种分割URL的方法,例如http:// aaa/bbb/ccc/ddd/eee.

我怎么得到"ccc"?当然可以拆分它,但它并不有趣.

.net c# string url-parsing

3
推荐指数
1
解决办法
1887
查看次数

将URL拆分为主机,端口和资源 - C++

我需要将URL拆分为主机,端口和资源.我搜索了很多参考文献,但找不到任何可以帮助我的东西.这就是我想要的:

例如:url是 - 1.2.3.4:5678/path1/path2.html必要的输出是:主机 - 1.2.3.4,端口 - 5678,资源 - /path1/path2.html

这就是我累的:

#include <iostream>
 #include <cstddef>
 #include <string>
 using namespace std;

int main()
{
   string url="http://qwert.mjgug.ouhnbg:5678/path1/path2.html";
   size_t found = url.find_first_of("://");
   cout<<found<<endl;
   string protocol=url.substr(0,found);
   size_t found1 =url.find_first_of(":");
   cout<<found1<<endl;
   string host =url.substr(found+3,found1-found+1);
   size_t found2 = url.find_first_of(":/");
   string port1 =url.substr(found1+7,found2+found1-1);
   string port =url.substr(found2+1);
   cout<<protocol<<endl;
   cout<<host<<endl;
   cout<<port1<<endl;
   cout<<port;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的预期结果是:

Protocol - http
Host - qwert.mjgug.ouhnbg
Port - 5678
Resource - path1/path2.html
Run Code Online (Sandbox Code Playgroud)

但我的结果是:

http:                                                                                                                                                  
qwert.mj                                                                                                                                               
t.mjgug                                                                                                                                                
//qwert.mjgug.ouhnbg:5678/path1/path2.html
Run Code Online (Sandbox Code Playgroud)

我应该改变什么?

c++ uri url-parsing

3
推荐指数
1
解决办法
4625
查看次数

如何从 Elixir 中的 URL 中提取文件名?

这是我的问题,我想从 URL ex 获取文件名。https://randomWebsite.com/folder/filename.jpeg我使用 this 得到了 javascript 的预期结果string.substring(string.lastIndexOf('/')+1)。在 Elixir 中,我使用这个函数String.slice(string, <first_value_from_binary.match>..String.length(string)...:binary.match()只获取与给定字母匹配的第一个字符的第一个索引...或者还有其他解决方案从 URL 获取文件名吗?

url-parsing elixir

3
推荐指数
2
解决办法
1965
查看次数

标签 统计

url-parsing ×10

java ×2

javascript ×2

python ×2

url ×2

.net ×1

c# ×1

c++ ×1

dns ×1

elixir ×1

elm ×1

firefox ×1

hash ×1

parsing ×1

regex ×1

replace ×1

rfc3986 ×1

string ×1

uri ×1

url-parameters ×1

urlparse ×1