Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разделить URL адрес на составляющие части. (https://javascript.ru/forum/misc/28086-pomogite-razdelit-url-adres-na-sostavlyayushhie-chasti.html)

Vitia28 07.05.2012 11:53

Помогите разделить URL адрес на составляющие части.
 
Добрый день! Привет всем!
Помогите решить задание. Зарание спасибо!

Пользователь в ответ на запрос приложения вводит URL адрес. Нужно разделить данный адрес на составляющие и вывести результат. Например, пользователь вводит адрес вида http://www.ufa.com.ua/utilites/hdd/out.php?sort=2. После этого ему выводится следующая информация о данной адресу:

протокол - http:
хост - www.ufa.com.ua
путь - / utilites / hdd /
имя файла - out.php
строка запроса - sort = 2

<html> 
<head> 
    <title>URL</title>
</head>
<body> 
   <script type="text/javascript"> 
        var URL = new Array("http://www.ufa.com.ua/utilites/hdd/out.php?sort=2");
        var titles = new Array("Protokol", "host", "url", "name file", "ryadok zaputu");
        var urls   = new Array("http://", "www.ufa.com.ua "," /utilites/hdd/", "out.php ", "sort=2");

        for (var i=0; i<titles.length; i++) {
        document.write (titles[i].bold() + ": " +urls[i].link(urls[i])+ "<br /> ");
        }
 
        //var str="http://www.ufa.com.ua/utilites/hdd/out.php?sort=2"
        //slice
		var str=prompt("Enter URL:");
		if (start =  str.slice(0,7) || str.split("://")) {
        document.write("<br/>Protokol: &nbsp;"+ str.slice(0,7))
        document.write("<br />")
        }
		if (start =  str.slice(7,10) || str.split(".")) {
        document.write("Host: " + str.slice(7,10))
        document.write("<br />")
        }
		if (start =  str.slice(10,15) || str.split("/")) {
        document.write("URL:  " + str.slice(10,15))
        document.write("<br />")
        }
		if (start =  str.slice(15,20) || str.split("/")) {
        document.write("Index Name file: " + str.slice(15,20))
        document.write("<br />")
        }
       
/*	   document.write("Index of last ryadok zaputu sort=2: " + str.lastIndexOf("sort=2"))
        document.write("<br/> <br />")
*/
        /*var p = /^(\w+:\/\/)(([a-z0-9\-]+\.)+[a-z]{2,6})([a-z0-9\-\/]*\/)*([a-z0-9\-]+\.[a-z]+)/i;

        var str = prompt("Запрос на ввод данных")
        var Str = "http://www.mysite.ru/folder1/folder2/forder3/file.html";
        p.exec(Str); //exec - Виконує пошук збігів у зазначеному рядку. Повертає масив результатів або null 
        prompt(Str);
		document.write("Повний URL - " + RegExp.input + Str + "<br>");
        document.write("Хост - " + RegExp.$1 + "<br>");
        document.write("Сайт - " + RegExp.$2 + "<br>");
        document.write("Шлях - " + RegExp.$4 + "<br>");
        document.write("Імя файла - " + RegExp.$5 + "<br>");
		*/
    </script>
</body>
</html>

vadim5june 07.05.2012 12:15

есть объект location там все определено уже Вам только вывести-или задача вручную то же самое получить?
http://javascript.ru/window-location

swa 08.05.2012 16:37

function getUrlVars(url) {  
// использование:
//_get = getUrlVars();
//a = _get['a'];

    var vars = {}, hash;  
    var hashes = decodeURIComponent(url).slice(url.indexOf('?') + 1).split('&');  
  
    for(var i = 0; i < hashes.length; i++)  
    {  
        hash = hashes[i].split('=');  
        vars[hash[0]] = hash[1];  
    }  
  
    return vars;  
}

devote 08.05.2012 16:45

swa,
человеку нужно разбить ссылку на части, а ваш скрипт лишь вытаскивает GET параметры из ссылки.

devote 08.05.2012 17:47

Самый простейший вариант:
function parse_url( url ) {

	var parts = url.split( "#" ),
		out = {};

	out.url = url;
	out.hash = ( parts.length > 1 ? ( ( url = parts.shift() ) || 1 ) && parts.join( "#" ) : "" );
	url = ( parts = url.split( "?" ) ).shift();
	out.search = parts.join( "?" );
	out.scheme = ( parts = url.split( "://" ) ) && parts.length > 1 ? parts.shift() : "";
	out.host = ( ( parts = parts.join( "://" ).split( "/" ) ) && parts.length > 1 &&
					parts[0].indexOf(".") > 0 || out.scheme ) && parts.shift() || "";
	out.script = parts.pop();
	out.path = ( parts.length > 0 ? "/" : "" ) + parts.join( "/" );

	return out;
}

var out = parse_url( prompt( "Введите URL: ", "http://somesite.com/folder/index.php?param=value#lalala" ) );

alert([
	"url: " + out.url,
	"scheme: " + out.scheme,
	"host: " + out.host,
	"path: " + out.path,
	"script: " + out.script,
	"search: " + out.search,
	"hash: " + out.hash
].join("\n"));

Vitia28 09.05.2012 19:18

Спасибо большое!!!


Часовой пояс GMT +3, время: 17:11.