preg_replace 버그인건가요? 그냥 오류인건가요?
운영자님이 알려주신 SyntaxHihglighter 적용을 하다가 br태그좀 한방에 걸러낼려고 다음과 같이 수정했는데 오류가 발생하더군요
function _preg_callback($m)
{
//$str = preg_replace(array("/<(\/?)(br)([\/]*)?>/i","/ /"),array("\n"," "), $m[1]);
$str = preg_replace(array("/<br( )*([\/]*)?>/","/ /"),array("\n"," "), $m[1]);
return "<pre class='brush:php;'>$str</pre>";
}
이렇게 사용을 하니 계속 오류가 발생해서 위 주석을 풀고 아래 껄 주석을 달아도 같은 오류가 나더군요

이렇게요
정규식이 오류가 있나 살펴봤는데 별문제는 없어 보이더라구요
문제는 주석의 방법인듯하더라구요
일반 한줄 주석인 // 이녀석을 사용할 경우 preg_replace 안에 있는 녀석들을 계속 읽어 들이는 듯 싶더라고요
그래서
function _preg_callback($m)
{
/*$str = preg_replace(array("/<(\/?)(br)([\/]*)?>/i","/ /"),array("\n"," "), $m[1]);*/
$str = preg_replace(array("/<br( )*([\/]*)?>/","/ /"),array("\n"," "), $m[1]);
return "<pre class='brush:php;'>$str</pre>";
}
이렇게 주석 처리를 했더니 헐~~~ 오류없이 통과
이 오류인지 버그인지에 대해 설명이 가능하신분 계신가요?
댓글 4개
<(\/?)(br)([\/]*)?>에서 마지막 ?> 를 php 구문 끝으로 인식하는군요.
에디터에 붙여넣으니 글자 색깔때문에 바로 티가 나네요.
?> 이녀석이 문제일 수 있겠네요
테스트 한번 해봐야겠어요
<br( )*([\/]*)?> 보다는 /<br(.*?)>/i 사용하시면 됩니다.
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5306 | JavaScript |
niceguys
|
1년 전 | 1217 | |
| 5305 | JavaScript |
niceguys
|
1년 전 | 1112 | |
| 5304 | PHP |
niceguys
|
1년 전 | 741 | |
| 5303 | JavaScript |
|
1년 전 | 1305 | |
| 5302 | PHP |
|
2년 전 | 800 | |
| 5301 | JavaScript |
techstar
|
2년 전 | 610 | |
| 5300 | PHP |
techstar
|
2년 전 | 670 | |
| 5299 | jQuery | 2년 전 | 695 | ||
| 5298 | JavaScript | 2년 전 | 630 | ||
| 5297 | 기타 |
시우시우9082
|
2년 전 | 1107 | |
| 5296 | 기타 |
|
2년 전 | 794 | |
| 5295 | PHP | 2년 전 | 1130 | ||
| 5294 | JavaScript |
swallow
|
2년 전 | 1898 | |
| 5293 | JavaScript |
swallow
|
2년 전 | 816 | |
| 5292 | JavaScript |
swallow
|
2년 전 | 1002 | |
| 5291 | JavaScript |
swallow
|
2년 전 | 688 | |
| 5290 | PHP |
swallow
|
2년 전 | 797 | |
| 5289 | PHP |
swallow
|
2년 전 | 814 | |
| 5288 | JavaScript |
swallow
|
2년 전 | 828 | |
| 5287 |
swallow
|
2년 전 | 1368 | ||
| 5286 | 2년 전 | 1577 | |||
| 5285 | 2년 전 | 1299 | |||
| 5284 | 2년 전 | 1717 | |||
| 5283 | 2년 전 | 1739 | |||
| 5282 | 2년 전 | 1434 | |||
| 5281 |
|
2년 전 | 1737 | ||
| 5280 | 2년 전 | 1165 | |||
| 5279 | 2년 전 | 1805 | |||
| 5278 | JavaScript | 2년 전 | 1606 | ||
| 5277 | 2년 전 | 1401 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기