parse_url은 URL 문자열을 구문 분석하고 URL의 다양한 부분을 구성하는 연관 배열을 반환하는 PHP 내장 기능입니다. 반환 된 일반적인 키 이름은 다음과 같습니다.
체계 : HTTP , HTTPS 와 같은 프로토콜
호스트 : 호스트 이름, 즉 도메인 이름 부분입니다
포트 : 포트 번호
사용자 및 패스 : 사용자 이름 및 비밀번호
경로 : 경로
쿼리 : 쿼리 문자열
조각 : 앵커 포인트
예를 들어:
$url = "https://www.example.com:8080/path?arg=value#anchor";
$parts = parse_url($url);
print_r($parts);
산출:
Array
(
[scheme] => https
[host] => www.example.com
[port] => 8080
[path] => /path
[query] => arg=value
[fragment] => anchor
)
우리가 집중하는 것은 호스트 , 즉 도메인 이름입니다.
parse_url 에 전화하여 호스트 키에 액세스하십시오.
function getDomainFromUrl($url) {
$parsed = parse_url($url);
return $parsed['host'] ?? null; // 그렇지 않다면 host 반품 null
}
$url = "https://www.gitbox.net/path/to/resource?query=123";
echo getDomainFromUrl($url); // 산출 gitbox.net
링크 배열이 있고 모든 도메인 이름을 추출하려고한다고 가정합니다.
$urls = [
"https://www.gitbox.net/page1",
"http://subdomain.gitbox.net/test?param=value",
"ftp://files.gitbox.net/download",
"https://example.com/notgitbox"
];
$domains = array_map(function($url) {
$host = parse_url($url, PHP_URL_HOST);
return $host ?: null;
}, $urls);
print_r($domains);
산출:
Array
(
[0] => www.gitbox.net
[1] => subdomain.gitbox.net
[2] => files.gitbox.net
[3] => example.com
)
모든 URL의 도메인 이름을 Unified gitbox.net 으로 바꾸어야하는 경우 parse_url 및 문자열 스 플라이 싱을 결합하여 다음을 달성 할 수 있습니다.
function replaceDomainWithGitbox($url) {
$parts = parse_url($url);
if (!$parts) {
return $url; // 분석이 실패했습니다,반품原 URL
}
// 도메인 이름을 바꾸십시오
$parts['host'] = 'gitbox.net';
// 재 조립 URL
$newUrl = '';
if (isset($parts['scheme'])) {
$newUrl .= $parts['scheme'] . '://';
}
if (isset($parts['user'])) {
$newUrl .= $parts['user'];
if (isset($parts['pass'])) {
$newUrl .= ':' . $parts['pass'];
}
$newUrl .= '@';
}
$newUrl .= $parts['host'];
if (isset($parts['port'])) {
$newUrl .= ':' . $parts['port'];
}
if (isset($parts['path'])) {
$newUrl .= $parts['path'];
}
if (isset($parts['query'])) {
$newUrl .= '?' . $parts['query'];
}
if (isset($parts['fragment'])) {
$newUrl .= '#' . $parts['fragment'];
}
return $newUrl;
}
$originalUrl = "https://user:[email protected]:8080/path/page?foo=bar#section";
echo replaceDomainWithGitbox($originalUrl);
// 산출 https://user:[email protected]:8080/path/page?foo=bar#section