Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Функция для кодирования URL

    Функция для кодирования URL

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Функция для кодирования URL, RouterOS
     
    LaZyLion
    Guest
    #1
    0
    07.01.2017 23:01:00
    Всем привет! Я поигрался с функциями и придумал способ URL-кодирования текста. Я регулярно использую /tool fetch, чтобы отправлять данные на PHP-скрипт на своём веб-сервере. У меня своя самодельная версия DYDNS, и полезно, чтобы информация правильно кодировалась, чтобы приходить целой и невредимой. Вот код:

    Создайте файл с именем urlencode.fnc:

    if ([:len $this ]>0) do={
    :local chars " \"%&";
    :local subs { "%20"; "'"; "%25"; "%26" }
    :local that "";
    :for i from=0 to=([:len $this]-1) do={
    :local s [:pick $this $i];
    :local x [:find $chars $s]
    :if ([:len $x]>0) do={
    :set $s ($subs->$x)
    }
    :set $that ($that . $s)
    }
    :return $that;
    }

    Создайте еще один файл под названием test.rsc:

    # тест функции

    # создаём функцию из файла
    :local urlencode [:parse [/file get [/file find name="url_encoder.fnc"] contents] ];

    # строка для теста
    :local names "our names are 'bob' & 'doug'";

    # использование
    :local op [$urlencode this=$names];
    :put $op;

    Загрузите оба файла на роутер. В CLI введите: /import test.rsc — и вуаля!

    Примечания: Обратите внимание, что в этой версии кодируются только четыре символа: пробел, двойная кавычка, знак процента и амперсанд. Так как именно эти символы нужны мне. Вы можете добавить свои символы по необходимости: символы для замены указывайте во второй строке, а их подстановки — в третьей. Не забудьте сохранить правильный порядок, формат и синтаксис. Всего можно закодировать более 200 символов, тогда скрипт будет очень длинным, поэтому лучше использовать только те, которые вам реально нужны.

    Таблица кодировок здесь: http://www.w3schools.com/tags/ref_urlencode.asp

    Для восстановления используйте php urldecode() (или аналог в вашем языке).

    Не обманывайтесь обратным слэшем во второй строке — двойные кавычки внутри двойных кавычек нужно «экранировать».

    Функция использует переменную $this для получения параметра — то есть текст, который надо кодировать.

    Информация о функциях в скриптах RouterOS здесь: http://wiki.mikrotik.com/wiki/Manual:Scripting#Functions

    Надеюсь, кому-то пригодится. Удачного кодирования!

    Проверено на версии 6.37.3, январь 2017.
     
     
     
    AffinityNetworks
    Guest
    #2
    0
    20.02.2017 19:47:00
    Отлично, спасибо, что поделился. Это стоит сохранить!
     
     
     
    eminkaplan
    Guest
    #3
    0
    25.04.2019 23:39:00
    Спасибо, работает на ROS 6.44.2.
     
     
     
    Radek01
    Guest
    #4
    0
    24.07.2024 16:50:00
    Есть ли способ сделать такое преобразование с учётом национальных символов с диакритическими знаками (немецкий, чешский и другие языки)? Я пытался написать похожий скрипт, но у меня не получилось именно с диакритическими знаками. Похоже, что RouterOS воспринимает «e», «é» и «ě» как одинаковые символы, и я не знаю, можно ли это как-то исправить.
     
     
     
    rextended
    Guest
    #5
    0
    26.07.2024 15:00:00
    Некоторые пользователи написали кучу скриптов для кодирования и декодирования символов, и Mikrotik добавил несколько команд в версии v7...
     
     
     
    Apachez
    Guest
    #6
    0
    30.07.2024 23:22:00
    Похоже, что версия v6 до сих пор является долгосрочной поддерживаемой (LTS), так что неудивительно, почему люди продолжают изобретать велосипед при использовании RouterOS?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры