제목에 짝이 안맞는 태그가 들어가있는 경우엔 IE에서 제대로 못보여 주는 거 같은데-_- (소스를 보면 다 받았지만 화면에는 아무것도 안나오는경우) 이거 어떻게 해결 할 수 없나요? 네스케이프에서는 잘 보이나?
phpbb의 문제인듯 합니다. 해결 방법을 알고 계시는 분들의 도움 부탁드립니다.... 그래서 글을 이곳으로 옮겼습니다....
문자열을 주어진 길이로 잘라주는 함수를 만들어서 사용하면 어떨까요? 이건... 제가 써먹고있는중인 허접한 함수입니다. 원래 펄이었던 녀석을 PHP로 바꾸느라 엄청 이상하네요 --;
// $str을 주어진 길이 $len의 뒷부분을 잘라주는 함수. function StrCutSize($str,$len=0,$opt=0) { // 길이가 주어지지 않으면 자르지 않고 나갑니다/ if( !$len ) { return $str; } // $opt가 주어지면 단어단위로 자릅니다. if( $opt && preg_match("/\s/",$str) ) { // 굳이 펄패턴을 이용한 것은, 공백 뿐만 아니라 탭이나 줄바꿈기호까지도 처리할 수 있게 하기 위한 것이었습니다. ^^; while( preg_match("/\S/",substr($str,$len,1)) ) { $len--; } } else { // 주어진 문자열을 단어단위로 나눈 뒤... $array = preg_split("/\s/",substr($str,0,$len)); // 마지막 단어를 바이트단위로 나누어서... $array = preg_split("//",$array[(count($array)-1)]); for( $i = 0; $i < count($array); $i++ ) { // 한글검사를 합니다. if( ord($array[$i]) > 127 ) { // 한글일 때에는 2바이트씩 스킵하고... $i++; // 마지막 바이트가 한글의 상위바이트라면 1바이트 더 잘라내야 합니다. $off = ( $i != count($array) - 1 ? 1 : 0 ); } else { $off = 0; } } // $off 가 세팅되어있으면 한글의 상위바이트로 보고 $len을 1 줄입니다. if($off) $len--; }
return substr($str,0,$len); }
음...아직 제대로 테스트는 안해 봤지만 어쨌거나 한글을 제대로 잘라내지 못해서 그런 현상인 것 같네요.
지금 phpbb는 제목에 해당하는 내용을 db에서 뽑아내서 화면에 뿌려주기 전에 문자열을 정확히 잘라내는 루틴이 중간에 들어가 있는지 먼저 확인을 해 보고, 만약 없다면 말씀하신 것과 같은 역할을 하는 놈으로 한번 걸러서 화면에 뿌려 주도록 해야겠네요.
아니면 다른 꽁수가 있을것 같기도 한데....아무튼 시간 나는 대로 살펴보고 적용하도록 하겠습니다.
감사합니다~~~
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
phpbb의 문제인듯 합니다.해결 방법을 알고 계시는 분들의 도움 부
phpbb의 문제인듯 합니다.
해결 방법을 알고 계시는 분들의 도움 부탁드립니다....
그래서 글을 이곳으로 옮겼습니다....
아마도 제목길이 제한때문인 것 같은데요...
문자열을 주어진 길이로 잘라주는 함수를 만들어서 사용하면 어떨까요?
이건... 제가 써먹고있는중인 허접한 함수입니다.
원래 펄이었던 녀석을 PHP로 바꾸느라 엄청 이상하네요 --;
// $str을 주어진 길이 $len의 뒷부분을 잘라주는 함수.
function StrCutSize($str,$len=0,$opt=0)
{
// 길이가 주어지지 않으면 자르지 않고 나갑니다/
if( !$len )
{
return $str;
}
// $opt가 주어지면 단어단위로 자릅니다.
if( $opt && preg_match("/\s/",$str) )
{
// 굳이 펄패턴을 이용한 것은, 공백 뿐만 아니라 탭이나 줄바꿈기호까지도 처리할 수 있게 하기 위한 것이었습니다. ^^;
while( preg_match("/\S/",substr($str,$len,1)) ) { $len--; }
}
else
{
// 주어진 문자열을 단어단위로 나눈 뒤...
$array = preg_split("/\s/",substr($str,0,$len));
// 마지막 단어를 바이트단위로 나누어서...
$array = preg_split("//",$array[(count($array)-1)]);
for( $i = 0; $i < count($array); $i++ )
{
// 한글검사를 합니다.
if( ord($array[$i]) > 127 )
{
// 한글일 때에는 2바이트씩 스킵하고...
$i++;
// 마지막 바이트가 한글의 상위바이트라면 1바이트 더 잘라내야 합니다.
$off = ( $i != count($array) - 1 ? 1 : 0 );
}
else
{
$off = 0;
}
}
// $off 가 세팅되어있으면 한글의 상위바이트로 보고 $len을 1 줄입니다.
if($off) $len--;
}
return substr($str,0,$len);
}
음...아직 제대로 테스트는 안해 봤지만 어쨌거나 한글을 제대로 잘라내지
음...아직 제대로 테스트는 안해 봤지만 어쨌거나 한글을 제대로 잘라내지 못해서 그런 현상인 것 같네요.
지금 phpbb는 제목에 해당하는 내용을 db에서 뽑아내서 화면에 뿌려주기 전에 문자열을 정확히 잘라내는 루틴이 중간에 들어가 있는지 먼저 확인을 해 보고, 만약 없다면 말씀하신 것과 같은 역할을 하는 놈으로 한번 걸러서 화면에 뿌려 주도록 해야겠네요.
아니면 다른 꽁수가 있을것 같기도 한데....아무튼 시간 나는 대로 살펴보고 적용하도록 하겠습니다.
감사합니다~~~
댓글 달기