태그 상관없이 한글 문자열 자르기

/**************************************************************
* $String : 원본 문자열 *
* $MaxLen : 자를 문자열 길이 *
* $ShortenStr : 말줄임 문자열 *
***************************************************************/

function Shorten_String($String, $MaxLen, $ShortenStr) {

$StringLen = strlen($String); // 원래 문자열의 길이를 구함

for ($i = 0, $count = 0, $tag = 0; $i <= $StringLen && $count < $MaxLen; $i++ ) {
$LastStr = substr($String, $i, 1);
if ($LastStr == ‘<') $tag = 1; // 태그 시작
if ($tag && $LastStr == ‘>’) { $tag = 0; continue; } // 태그 끝
if ($tag) continue;
if ( ord($LastStr) > 127 ) { $count++; $i++; }
$count++;
// 2바이트문자라고 생각되면 $i를 1을 더 증가시켜
// 결국은 2가 증가하게 된다.
// 다음에 오는 1바이트는 당연 지금 바이트의 문자에 귀속되는 문자이다.

}

$RetStr = substr($String, 0, $i);
// 위에서 구한 문자열의 길이만큼으로 자른다.
if ($count<$MaxLen)
return $RetStr;
else
return $RetStr .= $ShortenStr;
// 여기에 말줄임문자를 붙여서 리턴해준다.
}

사업자 등록번호 체크 알고리즘

사업자번호 첫번째는 co_serial_1, 둘째는 co_serial_2, 세번째 자리는 co_serial_3 입니다…
Ex) aaa-bb-ccccc
co_serial_1 = aaa
co_serial_2 = bb
co_serial_3 = ccccc

form 에서 post방식으로 받았을때입니다.^^

중간에 연산하는곳에 substr로 걸러내서 intval로 안정해 줘도 연산이 잘 되네요^^ 에러나는분은 고쳐서 쓰시던지요~~~^^

{
echo(”

“);
exit;
}

$co_serial_1 = $HTTP_POST_VARS[co_serial_1];
$co_serial_2 = $HTTP_POST_VARS[co_serial_2];
$co_serial_3 = $HTTP_POST_VARS[co_serial_3];

if (!isset($co_serial_1) || !isset($co_serial_2) || !isset($co_serial_3))
{
error_msg(“사업자등록번호를 입력해 주세요.”);
}
elseif (ereg(“[^0-9]+”,$co_serial_1) || ereg(“[^0-9]+”,$co_serial_2) || ereg(“[^0-9]+”,$co_serial_3))
{
error_msg(“사업자등록번호를 정확히 입력해 주세요.”);
}
else
{
$co_serial = $co_serial_1.$co_serial_2.$co_serial_3;
$IDtot = 0;
$IDAdd = “137137135”;
for ($i=0;$i < 9 ; $i++)
{
$IDtot = $IDtot + (substr($co_serial,$i,1) * substr($IDAdd,$i,1));
}

$IDtot = $IDtot + ((substr($co_serial,8,1)*5)/10);
$IDtot = 10 – ($IDtot % 10);

if (substr($co_serial_3,-1) != substr($IDtot,-1))
{
error_msg(“사업자등록번호를 정확히 입력해 주세요.”);
}
}
?>

동적인 더블 콤보 박스 (javascript+php)

출처 – phpschool.com
작성자 – 인포

이제 여기 팁에 다단계로직에 이어 두번째 올리내요…
오늘은 동적인 더블콤보박스라고 해야 하려나… 예를 들어 제조사를 선택
할경우 그 회사의 브랜드가 리플레쉬 되지 않고 출력하는 것입니다…

물론 데이터베이스 연결해서요…

저도 정적으로 나와 있는 자바스크립트를 조금 응용한 것이고 테스트용으로
만든것이라 팁이라 할 수도 없습니다…

그리고 아래 소스는 위에서 언급했듯이 테스트용으로 작업했기에 부적절한
변수들이 많이 사용되었고 소스가 다소 어지럽게 되어있으며, 소스를 시간
상의 관계로 줄이는 작업을 하지 못했으니… 여러분들은 소스를 줄여
보세요… .

여기 테스트 URL입니다.
http://www.inforweb.pe.kr/~inforweb/test/double_combo.php

아! 그리고 테이블 구조[2개]는 간단해서 설명을 드리지 않겠습니다…
허접하지만 도움이 될 분들에게는 미약하나마 도움이 되길…*^.^*

====================================================================
데이터베이스 연결

$qry_b=”select * from brand_name order by company_id asc, brand_name asc”;
$ret_b=mysql_query($qry_b);

$qry_c=”select * from company order by company_id asc”;
$ret_c=mysql_query($qry_c);
?>

인포카페 더블콤보 테스트


제조사 브랜드명


전 홈페이지에서 옮겨온 글들..

날씨 2001/04/17

요즘 날씨가 봄답지 않게 많이 춥네요.
4월 중순인데 아직도 잘때 옥매트 켜놓고 잡니다.
(옥매트란? : 작년 겨울 대히트 상품으로 전기요에 옥을 붙여놓은 것. ^^;)
차근차근 결혼준비는 끝나가고..
결혼 날짜도 점점 다가오네요.
처음(?)이라 날짜가 다가올수록 불안해지기도 합니다.
(먼저 결혼한 분들 다들 그러셨나?)
글을 쓰는 동안에도 울 이쁜이가 보고싶네요. ^^

감상 2001/04/26

이제 일주일 남았네요.
아직도 실감이 안 나네요.
하루하루 날짜는 다가오고 (요즘 정말 빠르게 지나가네요)
3월말만 해도 엄청 길게 느껴졌던 시간들..
일주일 후면 그녀와 난 한 집에.. ^^

빨리 같이 살고프다….

소감 2001/05/03

결혼 전날 저녁…
약간 떨립니다.
준비는 끝났고 자는 일만 남았습니다.
그녀와 통화도 끝났고 이제는 결혼식과 신혼여행이
기다리고 있을뿐입니다.
마지막으로 점검을 하고 자야겠습니다.
내일 정신 하나도 없겠죠.. ^^

흑흑 2001/05/19

오늘 아침에 울 이쁜이한테 무지하게 구박 받았다.
코 곤다고… T.T
원래 코 않고는데 언제부터인가 코를 골기 시작했고
맨날 혼자 잤으니까 코 고는지도 몰랐고..
어제 밤에 옆에서 코고는 소리때문에 뒤척이다 늦게 잠들어서
새벽에 또 깼다고 한다.
근데 내가 요즘 아침에 일어나면 피곤한 이유를 오늘 어렴풋이
알았다.
코 고니까 골지 말라고 건드리면 깊은 잠을 못자고 나도
잠은 자지만 아침에 일어나면 얼굴은 정말 퉁퉁 부어있고
졸리고… ^^;
술 한잔 먹여서 이쁜이 먼저 재우고 잘까?
(아침에 그랬더니 자기를 술꾼으로 만들 일 있냐고 하던데..)
좋은 방법 없나?

홈페이지 2001/05/29

명색이 총무닷컴 웹마스터라는 사람의 홈페이지가
정말 썰렁하다.
6월 1일 총무닷컴 전면개편만 끝나면 조금 한가해지겠지..
물론 총무닷컴이 끝나고 난후 기프트센터도 바로 작업을
해야하겠지만……
한가해지면 우리 홈페이지도 이쁘게 만들련다.
지금은 메뉴도 없는 홈페이지이지만 6월 중순이후엔
멋진 홈페이지가 될 것이라는 구상을 해본다.
오늘부터 야근.. 31일까지는 야근.. ^^
울 이쁜이 얼굴을 오래 못보겠군.

가로세로 비율틀려지지 않고 크기에 맞는 썸네일 만들기

출처 – phpschool.com

이런게 필요해서 검색해봤더니 가로세로 비율 유지하면서 만드는거나, 무조건 크롭시키는 소스는 있는데 알맞는 크기로 비율을 유지하며 만드는건 없더군요.. 하나 있긴 했는데 리눅스 명령을 사용하는거라서 이식성부족했구요..
그냥 gd만을 이용해서 썸네일을 만들어주는 함수입니다.
600×400 이미지를 300×200 으로 만들라고 하면 당연히 비율에 맞게 줄여지겠지만 400×600이미지를 300×200으로 만들라고 하면 3/4 비율로 줄인후 세로를 가운데를 중심으로 crop 시켜줍니다.
이미지에서 중요한 부분은 가운데쪽에 있을꺼같아서 가운데를 중심으로 양쪽 또는 위아래를 잘라내도록 했습니다. 특별한 기술이라기 보다 이런걸 찾는분들 쉽게 찾으시라고 올려드립니다.. 검색에 잘 걸리게 키워드도 넣어두지요. ㅎㅎ

사용법은 thumbnail(파일명,x사이즈,y사이즈) 입니다.
그럼 소스 갑니다.
/****************************************************************************
* thumbnail.lib.php
* 가로세로 비율이 흐트러지지 않고 지정한 크기로 썸네일을 만들어줌
* 2002.2.18 – 거친마루
*****************************************************************************/

## Image LoadJpeg (String $fName);
function LoadImage ($fName) {
$file_ext = strtolower(substr(strrchr($fName,”.”), 1)); //확장자
switch ($file_ext) {
case “jpg”: case “jpeg”:
$im = @ImageCreateFromJPEG ($fName);
break;
case “gif”:
$im = @ImageCreateFromGIF ($fName);
break;
case “png”:
$im = @ImageCreateFromPNG ($fName);
break;
}

if (!$im) {
$im = ImageCreate (150, 30);
$bgc = ImageColorAllocate ($im, 255, 255, 255);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
ImageString ($im, 1, 5, 5, “Error loading $fName”, $tc);
}
return $im;
}

## Image thumbnail_jpg(String $filepath, int $width, int $height);
function thumbnail ($filepath,$width=””,$height=””) {
$size=getimagesize($filepath); //원본 이미지사이즈를 구함
$shr_rateX = $width / $size[0];
$shr_rateY = $height / $size[1];
$base = ($shr_rateX <= $shr_rateY) ? "y" : "x";
$src_im=LoadImage($filepath);
if($base == “y”) {
$new_width=round(($size[0] * $height)/$size[1]); // (가로크기 * 새로운 세로 크기) / 세로크기
$offsetX = round(($new_width – $width) / 2); //각각 좌우로 잘라낼 길이
$offsetY = 0;
}
if($base == “x”) {
$size=getimagesize($filepath); //원본 이미지 사이즈 구함
$new_height=round(($size[1] * $width)/$size[0]); // (세로크기 * 새로운 가로크기) / 가로크기
$offsetX = 0;
$offsetY = round(($new_height – $height) / 2); // 각각 상하로 잘라낼 길이
}

$dst_im=ImageCreate($width,$height); //결과물 이미지 생성
ImageCopyResized($dst_im,$src_im,0,0,$offsetX,$offsetY,$width,$height,ImageSX($src_im)-$offsetX,ImageSY($src_im)-$offsetY); //만들기
return $dst_im;
}

?>