>  기사  >  백엔드 개발  >  PHP에서 Stack Overflow의 자동 링크 기능을 어떻게 구현할 수 있나요?

PHP에서 Stack Overflow의 자동 링크 기능을 어떻게 구현할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 11:35:02429검색

How Can I Implement Stack Overflow's Auto-Link Functionality in PHP?

Stack Overflow의 PHP 자동 링크 기능 모방

Stack Overflow의 자동 링크 동작은 매우 편리하여 사용자가 쉽게 웹사이트에 연결할 수 있습니다. 또는 게시물 내의 특정 콘텐츠. 이 기사에서는 정규식 패턴을 활용하여 URL을 식별하고 HTML 링크로 변환하여 PHP에서 유사한 기능을 구현하는 방법을 살펴봅니다.

내부 작동 방식을 이해하기 위해 제공된 코드를 분석해 보겠습니다.

<code class="php">/**
 * Replace links in text with html links
 *
 * @param  string $text
 * @return string
 */
function auto_link_text($text)
{
    // a more readably-formatted version of the pattern is on http://daringfireball.net/2010/07/improved_regex_for_matching_urls
    $pattern = '(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))';

    $callback = create_function('$matches', '
        $url       = array_shift($matches);
        $url_parts = parse_url($url);

        $text = parse_url($url, PHP_URL_HOST) . parse_url($url, PHP_URL_PATH);
        $text = preg_replace("/^www./", "", $text);

        $last = -(strlen(strrchr($text, "/"))) + 1;
        if ($last < 0) {
            $text = substr($text, 0, $last) . "&amp;hellip;";
        }

        return sprintf(\'<a rel="nofollow" href="%s">%s</a>\', $url, $text);
    ');

    return preg_replace_callback($pattern, $callback, $text);
}</code>

정규식 패턴 분석:

정규식 패턴은 욕심 많은 검색(?i)을 초기화하고 다음 세그먼트를 찾습니다.

  • 프로토콜 : a-z :
  • 도메인: wwwd{0,3}[.]|[a-z0-9.-] .{2,4}
  • 경로: /(?:1 |((2 |((3 )))) ) (?:((4 |((5 ))))|6 ))

사용자 정의 콜백 함수:

콜백 함수는 HTML 링크 마크업을 구성합니다. URL을 추출하고, 구문 분석하고, 도메인에서 선행 "www"를 제거하고, 필요한 경우 표시되는 URL 텍스트를 제한하고, 마지막으로 적절한 속성을 가진 앵커 태그를 생성합니다.

샘플 입력 및 출력:

함수 작동을 설명하려면 다음 입력 텍스트를 고려하세요.

"이것은 내 텍스트입니다. StackOverflow에서 질문하는 방법을 알고 있는지 궁금합니다. https:/를 확인하세요. /www.php.cn/link/6e212075e04d1616b06a5e1398e10053

그리고 base_convert php 함수도요?
https://www.php.cn/link/63c0d1be32c9c7e2dee3ac21690e490c

https://www. php.cn/link/a995b410d5e76ed56523533b47e3786a"

auto_link_text() 함수로 처리한 후의 출력은 다음과 같습니다.

"StackOverflow에 대한 질문에 대해 알고 계시는지 궁금합니다. 확인하세요. 이게 stackoverflow.com/questions/1925455/…

그리고 base_convert php 함수도요?
pt.php.net/manual/en/…

pt.php.net/manual/en/…"

이러한 기술을 구현함으로써 개발자는 Stack Overflow의 자동 연결 기능을 PHP 애플리케이션에 손쉽게 통합하여 사용자 경험을 향상시킬 수 있습니다. 작가와 독자 모두 콘텐츠 참조를 단순화합니다.


  1. s()<>
  2. s()< >
  3. s()<>
  4. s()<> 🎜>s()<>
  5. s`!()[]{};:'".,>?«»“”' '

위 내용은 PHP에서 Stack Overflow의 자동 링크 기능을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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