Книга знаний

1С:Предприятие

Парсинг HTML-адреса (HTTP,FTP,HTTPS,FTP)

Если нужно разобрать HTML-адресАвтор статьи: Гений 1С | Редакторы: Neco
Последняя редакция №2 от 01.02.07 | История
URL: http://kb.mista.ru/article.php?id=462

Ключевые слова: парсинг,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: Парсер гиперссылок;

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика