고수님은 주말에도 출동 하실까요? ^^;; 정보
고수님은 주말에도 출동 하실까요? ^^;;
본문
안녕하세요 영원한 초보 (ㅠㅠ) 시하입니다.
아래는 뷰페이지에서 적용된 SyntaxHighlight 라는 기능입니다.
SyntaxHighlight 는 바로 위처럼 코드를 이쁘게 보여주는 기능을 하는 것인데요..
이 기능을 리스트 스킨에도 적용하고 싶어서 끙끙 대는데 죽도록 적용이 않되서 이렇게 질문 드립니다.
먼저 리스트는 for 문으로 구성되어 있어서
for($i=0; $i<$list_count; $i++) { <-- 이 안에 아래와 같이 적용하면...
위처럼 하면
function _preg_callback($m) {
$str = str_replace(array("<br/>", " ", "<br>"), array("\n", " ", "\n"), $m[1]);
return "<pre class='brush:php;'>$str</pre>";
}
이 부분이 for문 안에 있다보니 펑션이 "중복 선언" 되었다고 에러가 납니다.
그래서 저 펑션만 for 문 위쪽으로 뺀 후
포문 안에는
이 라인만 집어 넣으면 ..이번엔 리스트의 가장 윗쪽에 있는 게시물에만
신탁스 하일라이트가 적용되고 그 밑으로는 적용되지 않습니다.
왜 이짓을 할려고 하냐면...바로 아래의 링크처럼 게시판을 만들려고 하기 때문입니다.
http://carisma.co.kr/v2/bbs/board.php?bo_table=php
(맨 위에 있는 리스트는 적용되고 두번쨰는 적용되지 않았습니다.)
$str 에 [$i]도 붙여보고..
펑션이름을 바꿔볼까하여 function _preg_callback_$i($m) 도 해보고
나름대로 이래저래 해볼 수 있는 방법은 다 해봤는데...
도저히 몰라서 고수님의 도움을 요청합니다. ;;
날씨가 춥습니다. 건강 조심하시고..미리 감사드립니다. ^^
아래는 뷰페이지에서 적용된 SyntaxHighlight 라는 기능입니다.
<?
function _preg_callback($m) {
$str = str_replace(array("<br/>", " ", "<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/>", " ", "<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/>", " ", "<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/>", " ", "<br>"), array("\n", " ", "\n"), $m[1]); return "<pre class=\"brush:php;\">$str</pre>";'), $str);
그거보단 자바스크립트 문제가 아닐까 짚어봅니다.
소스보기하시면 <pre class='brush:php;'></pre> 로 코드가 치환 안됐나요?
콜백함수 문제는 아닌것 같아서요.. 제대로 치환된거면 자바스크립트가 문제일 수 도 있지 않을까 싶습니다.
루프안에서 함수 중복문제는 익명함수를 쓸 수 도 있을 것 같은데
$str = preg_replace_callback("/\[code\](.*)\[\/code\]/iU", create_function('$m', '$str = str_replace(array("<br/>", " ", "<br>"), array("\n", " ", "\n"), $m[1]); return "<pre class=\"brush:php;\">$str</pre>";'), $str);
그거보단 자바스크립트 문제가 아닐까 짚어봅니다.
소스보기하시면 <pre class='brush:php;'></pre> 로 코드가 치환 안됐나요?
콜백함수 문제는 아닌것 같아서요.. 제대로 치환된거면 자바스크립트가 문제일 수 도 있지 않을까 싶습니다.
흐흐흐....ㅠㅠ 그저 눈물만....ㅠㅠ
제대로 적용되었던 거였군요. 다만 제가 첫번,째로 작성한 글이 잘못 되어 있었을 뿐...ㅠㅠ
혹시나 해서 새로운 글을 또 하나 작성 해보니 잘 나오네요.
세시간이 넘도록 뭐 한건지 모르겠네요..ㅠㅠ
답변에 감사드립니다.
제대로 적용되었던 거였군요. 다만 제가 첫번,째로 작성한 글이 잘못 되어 있었을 뿐...ㅠㅠ
혹시나 해서 새로운 글을 또 하나 작성 해보니 잘 나오네요.
세시간이 넘도록 뭐 한건지 모르겠네요..ㅠㅠ
답변에 감사드립니다.
토닥토닥~ 입니다. 가끔 문제일것 같은것이 문제가 아닐때가 있지요 ;; 해결됬으니 다행입니다
아하핳 ㅎㅋㅎ