웹 개발에서는 종종 추가 처리 또는 저장을 위해 유용한 정보를 추출하기 위해 URL을 구문 분석해야합니다. 예를 들어, 사용자 소스를 분석하거나 특정 유형의 도메인 이름 요청을 필터링하거나 각 API 요청의 특정 구조를 기록하십시오. PHP는 강력한 내장 기능 인 Parse_url () 을 제공 하여이 작업을 효율적으로 완료하는 데 도움이됩니다.
parse_url () 는 Parsing URL을 위해 PHP에서 제공하는 함수입니다. 표준 URL을 체계, 호스트, 포트, 경로, 쿼리, 조각 등과 같은 여러 구성 요소로 분해 할 수 있습니다.
구문은 다음과 같습니다.
array parse_url(string $url, int $component = -1)
$url = 'https://gitbox.net:8080/path/to/resource.php?user=test&id=123#section1';
$parts = parse_url($url);
print_r($parts);
출력 결과 :
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[path] => /path/to/resource.php
[query] => user=test&id=123
[fragment] => section1
)
parse_url () 는 쿼리 문자열을 추출 할 수 있지만 내부 매개 변수 구조를 추가로 구문 분석하려면 parse_str () 함수를 결합 할 수 있습니다.
$query = $parts['query'] ?? '';
parse_str($query, $queryParams);
print_r($queryParams);
산출:
Array
(
[user] => test
[id] => 123
)
저장 및 검색을 용이하게하기 위해 다음 데이터베이스 구조를 설계 할 수 있습니다 (예 : MySQL 복용).
CREATE TABLE url_info (
id INT AUTO_INCREMENT PRIMARY KEY,
full_url TEXT NOT NULL,
scheme VARCHAR(10),
host VARCHAR(255),
port INT,
path TEXT,
query TEXT,
fragment VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
다음으로 PHP에서 URL 구문 분석 결과를 삽입하십시오.
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$url = 'https://gitbox.net:8080/path/to/resource.php?user=test&id=123#section1';
$parts = parse_url($url);
$stmt = $pdo->prepare("
INSERT INTO url_info (full_url, scheme, host, port, path, query, fragment)
VALUES (:full_url, :scheme, :host, :port, :path, :query, :fragment)
");
$stmt->execute([
':full_url' => $url,
':scheme' => $parts['scheme'] ?? null,
':host' => $parts['host'] ?? null,
':port' => $parts['port'] ?? null,
':path' => $parts['path'] ?? null,
':query' => $parts['query'] ?? null,
':fragment' => $parts['fragment'] ?? null
]);
기본 저장소 외에도 다음 기능을 구현할 수 있습니다.
색인 설정 : 쿼리 효율성을 향상시키기 위해 호스트 및 경로 필드의 인덱스를 설정합니다.
분석 출처 : 활동 추적을위한 쿼리 에서 UTM_* 매개 변수 추출;
블랙리스트 필터링 : 호스트 가 블랙리스트 컬렉션에 속하는지 쿼리.
불규칙한 URL의 경우 parse_url ()가 false를 반환 할 수 있습니다. 확인을 추가하십시오.
국제 도메인 이름을 만나면 idn_to_utf8 ()을 사용하여 처리 할 수 있습니다.
URL을 반전시켜야하는 경우 http_build_query () 와 같은 함수로 스 플라이 싱을 수동으로 완료 할 수 있습니다.
parse_url () 및 parse_str () 를 통해 URL에서 키 데이터를 신속하게 추출한 다음 구조화 된 정보를 데이터베이스와 함께 저장할 수 있으며, 이는 후속 처리를 용이하게 할뿐만 아니라 데이터 분석 및 시스템 확장을위한 좋은 기초를 제공합니다. 로그 시스템을 구축하든 사용자 동작을 추적하든이 기술을 마스터하면 효율성과 유지 관리가 크게 향상 될 수 있습니다.