>백엔드 개발 >PHP 튜토리얼 >프로토콜 및 도메인 접두사가 있거나 없는 URL을 일치시키는 방법은 무엇입니까?

프로토콜 및 도메인 접두사가 있거나 없는 URL을 일치시키는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-22 08:47:02463검색

How to Match URLs with or Without Protocol and Domain Prefixes?

프로토콜 및 도메인 접두사가 있거나 없는 URL 일치

URL 작업 시 URL 포함 여부에 관계없이 일치해야 하는 경우가 많습니다. HTTP/HTTPS 프로토콜 또는 "www" 도메인 접두사. 다음은 이를 수행하는 정규식에 대한 자세한 분석입니다.

<code class="php">$regex = "(https?|ftp)://)?"; // SCHEME (Optional)
$regex .= "([a-z0-9+!*(),;?&amp;=$_.-]+(:[a-z0-9+!*(),;?&amp;=$_.-]+)?@)?"; // User and Pass (Optional)
$regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP address
$regex .= "((:[0-9]{2,5})?)?"; // Port (Optional)
$regex .= "(/([a-z0-9+$_%-]\.?)+)*/?"; // Path (Optional)
$regex .= "(?=[a-z+&amp;$_.-][a-z0-9;:@&amp;%=+/$_.-]*)?"; // GET Query (Optional)
$regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor (Optional)</code>

설명:

  • SCHEME(선택 사항): 일치 URL 시작 부분에 "https" 또는 "http".
  • 사용자 및 패스(선택 사항): 콜론으로 구분된 사용자 이름 또는 비밀번호와 일치합니다.
  • 호스트 또는 IP 주소: 하이픈으로 연결된 문자열 뒤에 점과 최상위 도메인 또는 IP 주소 형식을 사용하여 도메인 이름 또는 IP 주소를 캡처합니다.
  • 포트(선택 사항): 도메인 뒤의 포트 번호와 일치합니다.
  • 경로(선택 사항): 슬래시로 구분된 디렉토리와 파일 이름을 포함할 수 있는 URL의 경로를 캡처합니다.
  • GET 쿼리(선택 사항): 물음표 뒤의 모든 쿼리 매개변수와 일치합니다.
  • 앵커(선택 사항): 해시 뒤의 조각 식별자를 캡처합니다.

이 정규식을 확인하려면 다음 구문을 사용하세요.

<code class="php">preg_match("~^$regex$~i", $url, $m);</code>

이렇게 하면 전체 URL이 패턴과 일치하고 선택적 부분이 포함되는지 확인됩니다. 이 정규식을 사용하면 다양한 형식의 URL을 안정적으로 일치시킬 수 있습니다.

위 내용은 프로토콜 및 도메인 접두사가 있거나 없는 URL을 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.