URL을 텍스트의 HTML 링크로 감지 및 변환
다양한 온라인 애플리케이션에서 텍스트에 언급된 URL을 클릭 가능한 링크로 변환하는 것은 일반적인 요구 사항입니다. . PHP에서 이를 수행하는 방법을 살펴보겠습니다.
요구 사항
해결책
정규식 기반 접근 방식
다음과 일치하는 정규식을 만들어 보겠습니다. 유효한 URL 및 그 구성 요소 부품:
$rexProtocol = '(https?://)?'; $rexDomain = '((?:[-a-zA-Z0-9]{1,63}\.)+[-a-zA-Z0-9]{2,63}|(?:[0-9]{1,3}\.){3}[0-9]{1,3})'; $rexPort = '(:[0-9]{1,5})?'; $rexPath = '(/[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]*?)?'; $rexQuery = '(\?[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $rexFragment = '(#[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?'; $rex = "&\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&";
구현
preg_match_all()을 사용하여 텍스트에서 일치하는 모든 URL을 찾을 수 있습니다.
preg_match_all($rex, htmlspecialchars($text), $matches, PREG_OFFSET_CAPTURE);
HTML로 변환 링크
일치 항목을 반복하여 적절한 HTML 링크를 생성합니다.
foreach ($matches[0] as $match) { $url = $match[0]; $domain = $matches[2][0]; $path = $matches[4][0]; $completeUrl = $matches[1][0] ? $url : "http://$url"; $htmlLink = "<a href='$completeUrl'>$domain$path</a>"; $text = str_replace($url, $htmlLink, $text); }
이 접근 방식은 XSS 공격에 대한 보안을 유지하면서 대부분의 URL 형식을 효율적으로 처리합니다.
위 내용은 PHP에서 URL을 HTML 링크로 감지하고 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!