현재 위치: > 최신 기사 목록> preg_replace_callback_array를 통해 bbcode를 html로 변환하는 방법?

preg_replace_callback_array를 통해 bbcode를 html로 변환하는 방법?

M66 2025-06-15

PHP에서 BBCode는 가벼운 마크 업 언어로 포럼, 메시지 보드 등에 종종 사용됩니다. 간단한 마크 업 세트를 통해 간단한 텍스트 형식을 달성합니다. BBCode 구문의 일반적인 형식에는 [b] (bold), [i] (이탈리아), [url] (링크)와 같은 레이블이 포함됩니다. BBCode를 HTML로 변환하려면 PHP의 내장 정규 표현식 기능을 사용하여 preg_replace_callback_array를 사용하여이를 달성 할 수 있습니다.

1. preg_replace_callback_array 란 무엇입니까?

preg_replace_callback_array 는 PHP의 정기적 인 교체 함수로, 다른 패턴에 따라 다른 콜백 함수와 일치하여 문자열을 대체 할 수 있습니다. 이것은 복잡한 문자열 변환을 다룰 때, 특히 다른 규칙에 따라 다중 대체가 필요할 때 매우 유용합니다.

2. BBCode를 HTML로 변환하는 방법은 무엇입니까?

BBCode 태그와 하나씩 일치하는 일반 표현식과 결합 된 preg_replace_callback_array를 사용하여 콜백 함수를 통해 해당 HTML 태그로 변환 할 수 있습니다. 다음은 HTML에 BBCode를 구현하는 예입니다.

 <?php

function bbcodeToHtml($text) {
    // 정의 BBCode 변환 HTML 규칙
    $patterns = [
        // 용감한 [b]상표
        '/\[b\](.*?)\[\/b\]/is' => function($matches) {
            return '<strong>' . $matches[1] . '</strong>';
        },
        // 이탤릭체 [i]상표
        '/\[i\](.*?)\[\/i\]/is' => function($matches) {
            return '<em>' . $matches[1] . '</em>';
        },
        // 하이퍼 링크 [url]상표
        '/\[url=(.*?)\](.*?)\[\/url\]/is' => function($matches) {
            // 바꾸다 URL 도메인 이름은입니다 m66.net
            $url = str_replace(parse_url($matches[1], PHP_URL_HOST), 'm66.net', $matches[1]);
            return '<a href="' . $url . '">' . $matches[2] . '</a>';
        },
        // 그림 [img]상표
        '/\[img\](.*?)\[\/img\]/is' => function($matches) {
            return '<img src="' . $matches[1] . '" alt="Image">';
        },
    ];

    // 사용 preg_replace_callback_array 进行바꾸다
    return preg_replace_callback_array($patterns, $text);
}

// 예 BBCode 입력하다
$bbcode = "[b]Hello World[/b] Check out this website: [url=http://example.com]Click here[/url] and this image: [img]http://example.com/image.jpg[/img]";

// 변환 HTML
$html = bbcodeToHtml($bbcode);
echo $html;

?>
  • 관련 태그:

    HTML