Метод 1: базовая реализация strstr
Функция strstr — это широко используемая функция поиска строк в программировании на языке C. Вот простая реализация извлечения субдоменов из URL:
#include <stdio.h>
#include <string.h>
void extractSubdomains(const char* url) {
const char* prefix = "://";
const char* dot = ".";
char* subdomain;
subdomain = strstr(url, prefix);
if (subdomain != NULL) {
subdomain += strlen(prefix);
while (subdomain != NULL) {
subdomain = strstr(subdomain, dot);
if (subdomain != NULL) {
subdomain += strlen(dot);
printf("Subdomain: %s\n", subdomain);
}
}
}
}
int main() {
const char* url = "https://www.example.com";
extractSubdomains(url);
return 0;
}
Метод 2: использование регулярных выражений
Регулярные выражения предоставляют мощный способ сопоставления и извлечения шаблонов в строках. Вот пример использования библиотеки PCRE (Perl-совместимые регулярные выражения):
#include <stdio.h>
#include <pcre.h>
void extractSubdomains(const char* url) {
const char* pattern = "(?:https?://)?((?:[a-zA-Z0-9_-]+\\.)+\\w+)";
int ovector[30];
pcre* re;
const char* error;
int erroffset;
re = pcre_compile(pattern, 0, &error, &erroffset, NULL);
if (re != NULL) {
int rc = pcre_exec(re, NULL, url, strlen(url), 0, 0, ovector, 30);
if (rc > 0) {
int i;
for (i = 2; i < rc; i += 2) {
int start = ovector[i];
int end = ovector[i + 1];
printf("Subdomain: %.*s\n", end - start, url + start);
}
}
pcre_free(re);
}
}
int main() {
const char* url = "https://www.example.com";
extractSubdomains(url);
return 0;
}
Метод 3: использование библиотек анализа URL-адресов
Во многих языках программирования библиотеки анализа URL-адресов предоставляют удобные функции для извлечения различных компонентов URL-адреса, включая поддомены. Вот пример использования модуля Python urllib.parse:
from urllib.parse import urlparse
def extract_subdomains(url):
parsed_url = urlparse(url)
subdomains = parsed_url.hostname.split('.')[:-2]
for subdomain in subdomains:
print(f"Subdomain: {subdomain}")
url = "https://www.example.com"
extract_subdomains(url)