使用JavaScript和PHP获取基本URL以及.com部分之外的任何内容

时间:2016-01-09 07:33:44

标签: javascript php

我正在使用PHP,JavaScript和MySQL / SQLite开发书签应用程序。

我有一个文本输入字段用于输入书签URL,该URL使用AJAX检查服务器上的输入值,以查看该书签数据库中是否已存在该URL。

如果在数据库中保存了确切的值http://www.domain.com

http://www.domain.com将显示为重复。

如果它有一个尾部斜杠http://www.domain.com/,它会被忽略而不会显示为副本!

如果我确保在将新记录保存到DB之前删除尾部斜杠,那么这很简单。

我想要做的是从每个网址字符串生成2个网址...

如果我有这个网址:
    `http://www.domain.com/some-article/page/2

然后我希望能够将此部分http://www.domain.com放入变量中,然后将此部分/some-article/page/2放入另一个变量中。

通过这种方式,我可以为网站的许多页面添加书签,但也可以查看我是否已将该网站域的任何页面添加为书签。

所以我希望能够从任何类型的URL字符串中获取基本URL。其次,能够获得超过.com部分的网址中的任何值。

我知道这是一些基本内容,但我现在无法想到这些域部分的名称,可以使用JavaScript和PHP来帮助它们。

2 个答案:

答案 0 :(得分:4)

PHP有一个内置的parse_url() function,所以你可以这样做:

$domain = parse_url($url, PHP_URL_HOST); // Get the full domain eg. www.com
$path = parse_url($url, PHP_URL_PATH); // Get the URL

现在我建议你忽略模式(http://),这样就不能提交相同的链接两次 - 如http://然后是https://。通常,大多数网站通过普通和加密渠道提供相同的内容。

在JavaScript中:

var parser = document.createElement('a');
parser.href = url; // Your URL here
console.log(parser.hostname); // Your domain
console.log(parser.pathname); // Your path

答案 1 :(得分:3)

这就是你在JS中的表现:

var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.search;   // => "?search=test"
parser.hash;     // => "#hash"
parser.host;     // => "example.com:3000"

并使用parse_url代替PHP。