고수님은 주말에도 출동 하실까요? ^^;; > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

고수님은 주말에도 출동 하실까요? ^^;; 정보

고수님은 주말에도 출동 하실까요? ^^;;

본문

안녕하세요 영원한 초보 (ㅠㅠ) 시하입니다.

아래는 뷰페이지에서 적용된 SyntaxHighlight 라는 기능입니다.

<? 
function _preg_callback($m)  { 
 $str = str_replace(array("<br/>", "&nbsp;", "<br>"), array("\n", " ", "\n"), $m[1]); 
	return "<pre class='brush:php;'>$str</pre>"; 
} 
$str = $view[wr_content]; 
$str = preg_replace_callback("/\[code\](.*)\[\/code\]/iU", "_preg_callback", $str); 
echo $str; 
?>

 SyntaxHighlight 는 바로 위처럼 코드를 이쁘게 보여주는 기능을 하는 것인데요..

이 기능을 리스트 스킨에도 적용하고 싶어서 끙끙 대는데 죽도록 적용이 않되서 이렇게 질문 드립니다.

먼저 리스트는 for 문으로 구성되어 있어서
for($i=0; $i<$list_count; $i++) { <-- 이 안에 아래와 같이 적용하면...

<? 
function _preg_callback($m)  { 
 $str = str_replace(array("<br/>", "&nbsp;", "<br>"), array("\n", " ", "\n"), $m[1]); 
	return "<pre class='brush:php;'>$str</pre>"; 
} 
$str = $list[$i][wr_content]; 
$str = preg_replace_callback("/\[code\](.*)\[\/code\]/iU", "_preg_callback", $str); 
echo $str; 
?>


위처럼 하면
function _preg_callback($m)  {
 $str = str_replace(array("<br/>", "&nbsp;", "<br>"), array("\n", " ", "\n"), $m[1]);
return "<pre class='brush:php;'>$str</pre>";
}

이 부분이 for문 안에 있다보니 펑션이 "중복 선언" 되었다고 에러가 납니다.
그래서 저 펑션만 for 문 위쪽으로 뺀 후
포문 안에는
$str = $list[$i][wr_content]; 
$str = preg_replace_callback("/\[code\](.*)\[\/code\]/iU", "_preg_callback", $str); 
echo $str; 


 이 라인만 집어 넣으면 ..이번엔 리스트의 가장 윗쪽에 있는 게시물에만
신탁스 하일라이트가 적용되고 그 밑으로는 적용되지 않습니다.


왜 이짓을 할려고 하냐면...바로 아래의 링크처럼 게시판을 만들려고 하기 때문입니다.
http://carisma.co.kr/v2/bbs/board.php?bo_table=php
(맨 위에 있는 리스트는 적용되고 두번쨰는 적용되지 않았습니다.)

$str 에 [$i]도 붙여보고..
펑션이름을 바꿔볼까하여 function _preg_callback_$i($m) 도 해보고

나름대로 이래저래 해볼 수 있는 방법은 다 해봤는데...
도저히 몰라서 고수님의 도움을 요청합니다. ;;

날씨가 춥습니다. 건강 조심하시고..미리 감사드립니다. ^^
  • 복사

댓글 전체

view 에서 됬다면 되야 정상인것 같은데요 ^^;;

루프안에서 함수 중복문제는 익명함수를 쓸 수 도 있을 것 같은데
$str = preg_replace_callback("/\[code\](.*)\[\/code\]/iU",  create_function('$m', '$str = str_replace(array("<br/>", "&nbsp;", "<br>"), array("\n", " ", "\n"), $m[1]); return "<pre class=\"brush:php;\">$str</pre>";'), $str);

그거보단 자바스크립트 문제가 아닐까 짚어봅니다.

소스보기하시면 <pre class='brush:php;'></pre> 로 코드가 치환 안됐나요?
콜백함수 문제는 아닌것 같아서요.. 제대로 치환된거면 자바스크립트가 문제일 수 도 있지 않을까 싶습니다.
흐흐흐....ㅠㅠ 그저 눈물만....ㅠㅠ

제대로 적용되었던 거였군요. 다만 제가 첫번,째로 작성한 글이 잘못 되어 있었을 뿐...ㅠㅠ

혹시나 해서 새로운 글을 또 하나 작성 해보니 잘 나오네요.

세시간이 넘도록 뭐 한건지 모르겠네요..ㅠㅠ

답변에 감사드립니다.
© SIRSOFT
현재 페이지 제일 처음으로