2014-04-30 17 views
0

편집 : 내 웹 사이트에서 약간의 개선 후 마침내 예쁜 Google 코드가 작동했습니다. 변경 사항이 적용되지 않았지만 지금은 ... 일부 중요한 변경 사항이 적용된 후 마침내 그것을 좋아 했어 ...bbcode 태그 안의 모든 문자열을 일치시키는 정규 표현식

<link rel="stylesheet" type="text/css" media="all" href="gcp/prettify.css"> 
<script language="javascript" src="gcp/prettify.js" type="text/javascript"></script> 

<body onload="prettyPrint()"> 

$body = preg_replace('#\[code\](.*)\[/code\]#isU', '<div class="code"><span class="xcode"><code class="prettyprint">\1</code></span></div>', $body); 

나는이 강력한 라이브러리에 나를 움직여 주셔서 감사합니다 ... 나는 그것을 좋아합니다!

My Blog with decent highlight library

+0

스택 오버플로 사용 [구글 코드 싸게 치장 (https://code.google.com/p/google -code-prettify /)를 사용합니다. PHP 솔루션보다 사용하기 쉽습니다. – AeroX

+1

대단한 !!! 나는 너의 제안에 따라 내 문제를 해결했다 !!! – user3584233

답변

1

는 다음 포맷에 대한 콜백 함수에 일치하는 텍스트를 전달할 수 있습니다 이에 대한 preg_replace_callback()을 것이다 사용하는 더 나은 기능. 여기

가 구현 한 예이다 : (이 일부 조정이 필요할 수 있습니다하지만 당신은 아이디어를 얻을한다)

function code_tag_replace($matches) { 
    $ret = '<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="10" CLASS="code" BORDER="0"><TR><TD><SPAN CLASS="xcode">'; 
    $ret .= SyntaxHighlight::process($matches[1]); 
    $ret .= '</SPAN></TD></TR></TABLE>'; 
    return $ret; 
} 
$body = preg_replace_callback(
    '#\[code\](.*)\[/code\]#isU', 
    'code_tag_replace', 
    $body 
); 
+0

PHP 5.3에서 opcode 153/1/8이 잘못되었습니다. W : \ www \ pst \ conf.php에서 356 행 ** function ($ matches) {** PHP 5.4 이하 ** 페이지 로딩 중 오류 ** ... preg_replace_callback은 아파치와 PHP를 충돌시킵니다 ... php 5.4 이하 ... – user3584233

+0

AeroX 당신은 무엇을 더 잘 설명 할 수 있습니까? 할 수 있으면 제게 몇 가지 예를 들어주세요. – user3584233

+0

function space2nbsp ($ matches) { $ s = $ matches [0]; return str_repeat (' ', strlen ($ s)); } $ body = preg_replace_callback ('/ \ s {2,} /', 'space2nbsp', $ body); 내 PHP 구성에 preg_replace_callback 함수를 호출해야합니다 후, 먼저 함수를 이동해야합니다 ... 이것은 게시에 사용하는 내 PHP 파일에서 가져온 또 다른 예제입니다 ... – user3584233