Парсинг HTML-адреса (HTTP,FTP,HTTPS,FTP) Ключевые слова: парсинг,HTML
Функция обРазобратьИмяФайла(_ИсходноеИмяФайла) Экспорт
П=Новый Структура();
Протокол="";
Сервер="";
С=СокрЛП(_ИсходноеИмяФайла);
ВР_С=ВРег(С);
Если Лев(ВР_С,5)="FILE:" Тогда
Протокол="FILE";
С=Сред(С, 6);
ИначеЕсли Лев(ВР_С,5)="HTTP:" Тогда
Протокол="HTTP";
С=Сред(С, 6);
ИначеЕсли Лев(ВР_С,6)="HTTPS:" Тогда
Протокол="HTTPS";
С=Сред(С, 7);
ИначеЕсли Лев(ВР_С,4)="FTP:" Тогда
Протокол="FTP";
С=Сред(С, 5);
КонецЕсли;
Если Протокол<>"" Тогда
//Удаляем символы /
Инд=1;
Пока Сред(С, Инд,1)="/" Цикл
Инд=Инд+1;
КонецЦикла;
С=Сред(С, Инд);
КонецЕсли;
//Ищем конец имени сервера
Если Протокол="FTP" ИЛИ Протокол="HTTP" ИЛИ Протокол="HTTPS" Тогда
Поз=Найти(С, "/");
Если Поз=0 Тогда
Поз=СтрДлина(С);
КонецЕсли;
Сервер=Лев(С, Поз-1);
С=Сред(С, Поз+1);
//Дополнительно переводим
КонецЕсли;
Если Протокол="FILE" Тогда
Р="";
//Заменяем символы на их нормальные названия
Инд=1;
Пока Инд<=СтрДлина(С) Цикл
Симв=Сред(С, Инд, 1);
Если Симв="%" Тогда
Рез=обШестнадцатеричноеЧисловВДесятичное(Сред(С, Инд+1, 2));
Если Рез=Неопределено Тогда
Замена="";
Иначе
Замена=Символ(Рез);
КонецЕсли;
Инд=Инд+3;
Р=Р+Замена;
Иначе
Инд=Инд+1;
Р=Р+Симв;
КонецЕсли;
КонецЦикла;
С=Р;
С=СтрЗаменить(С, "/", "\");
КонецЕсли;
//Далее выделяем путь, имя файла и расширение
Расширение=Неопределено;
ИмяФайла=Неопределено;
Путь=Неопределено;
Длина=СтрДлина(С);
Для Инд=1 По Длина Цикл
//Перебор с конца
Поз=Длина-Инд+1;
Симв=Сред(С, Поз,1);
Если Симв="." Тогда
Если Расширение=Неопределено Тогда
Расширение=Сред(С, Поз+1);
С=Сред(С,1, Поз-1); //Обрезаем строку
КонецЕсли;
ИначеЕсли Симв="/" ИЛИ Симв="\" Тогда
ИмяФайла=Сред(С, Поз+1);
Путь=Сред(С,1,Поз);
Прервать;
КонецЕсли;
КонецЦикла;
Если Расширение=Неопределено Тогда
Расширение="";
КонецЕсли;
Если Путь=Неопределено Тогда
Путь="";
КонецЕсли;
Если ИмяФайла=Неопределено Тогда
ИмяФайла=С; //Целиком строке...
КонецЕсли;
П.Вставить("Протокол", Протокол);
П.Вставить("Сервер", Сервер);
П.Вставить("Путь", Путь);
П.Вставить("Имя", ИмяФайла);
П.Вставить("Расширение", Расширение);
Возврат П;
КонецФункции
См. также
Книга знаний: v8: Парсер гиперссылок; |