현재 위치: > 최신 기사 목록> php 코드의 구문 강조 표시를 구현하기 위해 preg_replace_callback_array 함수를 사용하는 방법은 무엇입니까?

php 코드의 구문 강조 표시를 구현하기 위해 preg_replace_callback_array 함수를 사용하는 방법은 무엇입니까?

M66 2025-06-04

구문 하이라이트는 개발 도구, 블로그 엔진 또는 코드 공유 플랫폼을 구축 할 때 중요한 기능입니다. PHP 자체에는 프론트 엔드 (예 : Prism.js 또는 Highlight.js)와 같은 기성품 하이라이트 라이브러리가 없지만 Pure PHP를 사용하여 기본 구문 강조 표시를 구현할 수 있습니다. preg_replace_callback_array () 함수는 다른 코드 요소와 일치하고 다른 색상이나 레이블로 랩핑하는 간결하고 우아한 방법을 제공합니다.

이 기사에서는 preg_replace_callback_array ()를 사용하여 간단한 PHP 구문 형광펜을 구현하는 방법을 설명합니다.

preg_replace_callback_array 는 무엇입니까?

preg_replace_callback_array () 는 PHP 7.0에 도입 된 함수입니다. 한 번에 여러 정규 표현식에 대해 다른 콜백 함수를 지정할 수 있습니다. 이를 위해서는 구조가 명확하고 효율이 높은 기존 방법 Preg_replace_callback () 에 비해 각 규칙에 대한 호출이 필요합니다.

기본 구문은 다음과 같습니다.

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject);

우리가 달성하고자하는 효과

우리는 다음 요소를 강조하고 싶습니다.

  • PHP 키워드 (예 : 기능 , 에코 , IF 등)

  • 문자열 (홀수 및 이중 인용문으로 둘러싸인 내용)

  • 댓글 ( // 시작 또는 / * ... * / )

  • 변수 ( $ 로 시작하는 식별자)

샘플 코드

 <?php

$code = <<<'PHP'
<?php
// 이것은 의견입니다
function sayHello($name) {
    echo "Hello, $name!";
}
PHP;

function highlight_php_code(string $code): string {
    $keywords = ['function', 'echo', 'if', 'else', 'return'];
    $keywordPattern = '/\b(' . implode('|', $keywords) . ')\b/';
    $stringPattern = '/([\'"])(.*?)(\1)/s';
    $commentPattern = '/(\/\/.*?$|\/\*.*?\*\/)/ms';
    $variablePattern = '/(\$\w+)/';

    $patterns = [
        $keywordPattern => function ($matches) {
            return '<span style="color: blue; font-weight: bold;">' . $matches[0] . '</span>';
        },
        $stringPattern => function ($matches) {
            return '<span style="color: green;">' . htmlspecialchars($matches[0]) . '</span>';
        },
        $commentPattern => function ($matches) {
            return '<span style="color: gray; font-style: italic;">' . htmlspecialchars($matches[0]) . '</span>';
        },
        $variablePattern => function ($matches) {
            return '<span style="color: darkorange;">' . $matches[0] . '</span>';
        },
    ];

    // 안전한 취급 HTML
    $code = htmlspecialchars($code);

    // 먼저 처리하십시오 PHP 상표
    $code = preg_replace('/&lt;\?php/', '<span style="color: purple;">&lt;?php</span>', $code);

    // 문법 강조 표시를 적용하십시오
    return nl2br(preg_replace_callback_array($patterns, $code));
}

// 출력이 강조되었습니다 HTML 암호
echo highlight_php_code($code);

?>

출력 효과

이 코드가 실행되면 스타일의 PHP 코드가 포함 된 HTML 형식의 문자열이 출력됩니다.

  • 키워드는 파란색과 두껍게 변합니다

  • 문자열이 녹색으로 변합니다

  • 주석은 회색 이탤릭체 입니다

  • 변수는 진한 주황색 입니다

다음과 같은 페이지에 직접 포함시킬 수 있습니다.

 <pre style="background-color: #f9f9f9; padding: 10px;">
<?php echo highlight_php_code($code); ?>
</pre>

응용 프로그램 시나리오의 예

코드 공유 플랫폼을 개발하는 경우 예를 들어 :

 https://m66.net/snippet/123

이 기능을 사용하여보기 코드 세부 사항 페이지에서 사용자의 PHP 코드 스 니펫을 강조하여 가독성을 향상시킬 수 있습니다.

요약

preg_replace_callback_array ()를 사용하여 PHP 구문 강조 표시를 달성하십시오. 이는 논리가 명확 할뿐만 아니라 경량 코드 디스플레이 요구에 적합한 성능이 우수합니다. 물론 고급 구문 분석 기능이 필요한 경우 PHP의 토큰 화기 확장을 결합하거나 타사 라이브러리 (예 : Highlower.php)를 사용하는 것을 고려하십시오.