PHP - функция подсветки синтаксиса


Наткнулся однажды на любопытную функцию для подсветки синтаксиса HTML тегов. Функция поражает своей простатой и работает отлично. В данном примере цвета подобраны по аналогии с программой Notepad++.

<?php 
function highlight_html($string, $decode = TRUE){ 
    $tag = '#0000ff'; 
    $att = '#ff0000'; 
    $val = '#8000ff'; 
    $com = '#34803a'; 
    $find = array( 
        '~(\s[a-z].*?=)~',                    // Highlight the attributes 
        '~(&lt;\!--.*?--&gt;)~s',            // Hightlight comments 
        '~(&quot;[a-zA-Z0-9\/].*?&quot;)~',    // Highlight the values 
        '~(&lt;[a-z].*?&gt;)~',                // Highlight the beginning of the opening tag 
        '~(&lt;/[a-z].*?&gt;)~',            // Highlight the closing tag 
        '~(&amp;.*?;)~',                    // Stylize HTML entities 
    ); 
    $replace = array( 
        '<span style="color:'.$att.';">$1</span>', 
        '<span style="color:'.$com.';">$1</span>', 
        '<span style="color:'.$val.';">$1</span>', 
        '<span style="color:'.$tag.';">$1</span>', 
        '<span style="color:'.$tag.';">$1</span>', 
        '<span style="font-style:italic;">$1</span>', 
    ); 
    if($decode) 
        $string = htmlentities($string); 
    return '<pre>'.preg_replace($find, $replace, $string).'</pre>'; 
} 

echo highlight_html(' 
<!-- This is an 
HTML comment --> 
<a href="home.html" style="color:blue;">Home</a> 
<p>Go &amp; here.</p> 
<!-- This is an HTML comment --> 
<form action="/login.php" method="post"> 
    <input type="text" value="User Name" /> 
</form> 
'); 
?>

Результат будет следующий:

 


Тэги:

Комментарии: 0

Прокомментировать »

 
 
 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика