https://xe1.xpressengine.com/qna/22837872#comment
php 5.5에서 사이트를 운영했을 때 해당 링크의 댓글에 달린대로 아래 php 용법을 사용하였습니다.
{@
$search = array ("'<script[^>]*?>.*?</script>'si", // 자바 스크립트 제거
"'<[\/\!]*?[^<>]*?>'si", // HTML 태그 제거
"'([\r\n])[\s]+'", // 공백 제거
"'&(quot|#34);'i", // HTML 엔티티 치환
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // php로 실행
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text_len = preg_replace($search, $replace, $oDocument->variables['content']);
}
{mb_strlen(preg_replace("/(&([a-zA-Z]+)\;)|([\s\n\r]+)/","",$text_len), "UTF-8");}
$search = array ("'<script[^>]*?>.*?</script>'si", // 자바 스크립트 제거
"'<[\/\!]*?[^<>]*?>'si", // HTML 태그 제거
"'([\r\n])[\s]+'", // 공백 제거
"'&(quot|#34);'i", // HTML 엔티티 치환
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // php로 실행
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text_len = preg_replace($search, $replace, $oDocument->variables['content']);
}
{mb_strlen(preg_replace("/(&([a-zA-Z]+)\;)|([\s\n\r]+)/","",$text_len), "UTF-8");}
php 7로 이전한 이후로는 위 php가 작동하지 않는 걸로 보면 아무래도 상위 버전으로 올라가면서 용도가 사라진 용법이 사용된 것 같은데 구체적으로 어떤 부분을 만져야 하는지 모르겠네요. 찾아보니 preg_replace도 mb_strlen도 php 7에서 다 쓰이고요. 위의 소스가 php 7에서도 돌아가도록 수정할 수 있으면 좋겠는데... 많이 어려울까요?
댓글 3
PHP로 callback 함수를 정의해놓고 가져다 써야할 거에요.