Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 URL에 http://가 없을 때 자동으로 추가하는 방법

웹 개발을 하다 보면 사용자가 입력한 URL 문자열에 https:// 또는 https:// 같은 프로토콜이 빠져 있는 경우가 자주 발생합니다. 이럴 때 프로토콜이 없으면 링크가 정상적으로 작동하지 않기 때문에, 자동으로 붙여주는 처리가 필요합니다.

여기서는 문자열에 'https://'를 자동으로 추가해 주는 함수를 만들어 보겠습니다. 예를 들어 다음과 같은 값이 입력되었다고 가정해 봅시다.

example.com

우리가 원하는 최종 출력 결과는 'https://'가 포함된 실제 링크 형태입니다.

https://example.com

해결 방법

이를 구현하려면 점(.) 연산자로 문자열을 연결하고, preg_match() 함수를 활용해 정규 표현식으로 기존 프로토콜 여부를 조건 검사하면 됩니다. 이미 'https://'나 'https://'가 포함되어 있다면 중복으로 붙이지 않도록 처리하는 것이 핵심입니다.

예제 코드

<!DOCTYPE html>
<body>
<?php
function addingTheHTTPValue($stringValue) {
   if (!preg_match("~^(?:f|ht)tps?://~i", $stringValue)) {
      $stringValue = "https://" . $stringValue;
   }
   return $stringValue;
}
echo addingTheHTTPValue("example.com");
echo "<br>";
echo addingTheHTTPValue("https://example.com");
?>
</body>
</html>

코드 설명

위 코드의 핵심은 preg_match("~^(?:f|ht)tps?://~i", $stringValue) 부분입니다. 이 정규 표현식은 문자열이 ftp://, https://, https://로 시작하는지 대소문자 구분 없이 검사합니다. 일치하지 않는 경우에만 'https://'를 앞에 붙여 반환하므로, 이미 프로토콜이 있는 URL은 그대로 유지됩니다.

출력 결과

https://example.com
https://example.com

첫 번째 호출에서는 프로토콜이 없던 'example.com'에 'https://'가 자동으로 추가되었고, 두 번째 호출에서는 이미 'https://'가 포함되어 있어 원본 값이 그대로 반환된 것을 확인할 수 있습니다.