728x90

PHP 기본 함수


PHP 함수를 다 열거할 수는 없고 좀 더 자주 봤으면 하는 것만 발췌하여 작성한다.


함수

 설 명

 substr

  • 엑셀에서는 문자열 좌측을 추출할 때 left(string,length) 를 사용하지만
    PHP 에서는 문자열 추출은 substr 함수를 사용한다.

  • substr(string,start,length); 
    주어진 스트링에서 start 부터 length 만큼의 부분 스트링을 리턴한다.
    start는 0 부터 시작하며,
    length 는 생략 가능하다.
  • echo substr("abcdefg",3)."<br />";    // defg 를 리턴 즉, 3번째부터 전부 리턴한다.
    echo substr("abcdefg",1,3)."<br />"; // bcd 를 리턴
    echo substr("abcdefg",-3)."<br />";    // efg 를 리턴. 즉, 뒤에서부터 3개를 리턴한다.
    echo substr("abcdefg",-1)."<br />";    // g 만 리턴. 즉, 뒤에서부터 1개만 리턴한다.
    echo substr("abcdefg",-3,1)."<br />"; // e만 리턴. 즉, 뒤에서부터 3번째만 리턴한다.
  • <?php
    $tel = "010-9999-0001";
    echo "전화번호는 ". $tel;
    echo "<br />";
    $phone_type = 1;
    if(substr($tel,0,3) == '070') $phone_type = 2;
    if(substr($tel,0,2) == '01') $phone_type = 3;
    echo "전화타입은 ". $phone_type;
    ?>

 chop

  • 스트링의 뒤쪽 공백을 없애준다.
  • $trimmed = chop($line);

 chr

  • 지정된 아스키 문자를 리턴해준다
  • $str .= chr(27);  // ESC 문자를 해당 스트링에 붙여준다.

 flush

  • PHP에서 사용하는 출력 버퍼를 비운다. 이것은 Web 브라우저로 가는 데이터를 빨리 보낼 수 있는 장점이 있다.
  • flush();   // output 버퍼에 있던 데이터를 모두 비운다.

 strcmp

  • 두 개의 스트링을 비교해 준다.
    두개의 스트링이 같은 경우에는 0이 리턴된다.
  • $result = strcmp($str1, $str2);
    if ($result == 0) {
        echo "두 문자열은 서로 동일";
    }

 strlen

  • 해당 스트링의 길이를 알려 준다.
  • $length = strlen ($str);
    echo $length ;

 strchr

  •  스트링에서 해당 문자의 마지막 위치를 파악해서 그 뒷부분을 리턴해준다.

strstr

  •  스트링에서 해당 문자의 첫 번째 위치를 파악해서 그 뒷부분을 리턴해준다.

 str_replace

  •  주어진 스트링에서 단어들을 바꾸어 준다.

 count

  • 주로 배열 요소들의 개수를 파악할 때 사용한다.
  • $num = count($result);

 array_push

  • 해당 배열에 값을 추가적으로 넣을 수 있게 한다.
  • $stack = array("orange""banana");
    array_push($stack"apple""raspberry");
    print_r($stack);
    결과는 Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )
  • $multisqlque = array();
    for($i=0; $i < count($stack); $i++)
    {
        array_push($multisqlque, "subject LIKE '%".$stack[$i]."%'" );
    }
    if(count($multisqlque) > 0) {
        $sqlque .= " ( ";
        $sqlque .= join(" or ", $multisqlque);
        $sqlque .= " ) ";
    }
    echo $sqlque; // 쿼리문이 정상인지 확인
    결과는 ( subject LIKE '%orange%' or subject LIKE '%banana%' or subject LIKE '%apple%' or subject LIKE '%raspberry%' )

 in_array

  • 배열내에 해당 값이 있는지 없는지 알려준다.
    배열에 값이 있으면 true 인 1 을 리턴해주고, 없으면 false 를 리턴
  • if(in_array("apple",$stack)) {
        echo "배열이 존재";
    }
    else {
        echo " 배열이 없어요";
    }

 next

  • 배열의 내부 포인터를 하나 증가시키면서 그 값을 리턴한다

 prev

  • 배열의 내부 포인터를 하나 감소시키면서 그 값을 리턴한다.

 reset

  • 배열의 포인터를 맨 처음으로 옮긴다.

 basename

  • PATH 에 붙어있는 파일 이름을 가져온다.
  • echo basename("/home/httpd/html/index.php"); // index.php 를 출력해준다.
  • echo dirname("/home/httpd/html/index.php");  // /home/httpd/html 를 출력해준다.

ereg_replace

  • 주어진 스트링에서 특정 패턴을 찾아서 다른 것으로 대처한다.
  • $string = "This is a test";
    echo ereg_replace ("is", "was", $string);
    // This was a test 를 출력한다.


728x90

'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글

[PHP] 쿠키와 세션, 그리고 보안  (0) 2015.05.27
[PHP] 홈페이지 설정 정보 확인  (0) 2015.04.28
[PHP] 한글자르기 substr  (0) 2015.01.04
IP 체크  (0) 2014.05.18
GET, POST 변수전달  (0) 2014.05.15
블로그 이미지

Link2Me

,
728x90

PHP 삼항연산자 ?


삼항 연산자 (? :): 비교 연산자와 함께 사용하여 어떤 판단을 하고자 할 때 사용한다. ?와 :을 사용해서 구문을 작성한다.

if 와 else 문의 장황함을 피하는 방법 중 하나는 더욱 간결한 삼항 연산자(conditional operator)인 ? 를 사용하는 것이다.

HTML 문과 혼재되어 있는 경우에는 대체문법을 사용하면 좋다. 참조 : http://link2me.tistory.com/981



예제를 통해 살펴보자.

$message = 'Hello '.($user->is_logged_in() ? $user->get('first_name') : 'Guest');

/* shorthand usage */
$message = 'Hello '.($user->get('first_name') ?: 'Guest');


/* "thankfully-you-don't-need-to-maintain-this" level */
 $days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); //returns days in the given month


/* If condition is true then assign a to result otheriwse b */
/* 조건이 참이면 a를 할당하고, 거짓이면 b를 할당
$result = ($a < $b ) ? $a :$b;


function xx($a,$b)
{
  $rs = ($a > $b) ? $a : $b ;
  return $rs;
}


<?php

$j = 11;

while($j-- > -10) {

if($j == 0 ) continue;  // 0 으로 나누는 것을 방지하기 위한 목적

echo "$j". (10/$j) . "<br />";

}

?>


PHP 5.3 이후부터는

$rs = $a ? $a : ' ' ;

대신에

$rs = $a ? : ' ' ;

와 같이 true 인 경우의 변수를 생략할 수 있다.

하지만 정확하게 하기 위해서 true 인 경우의 변수도 써주는 것이 좋다.


이 밖에 PHP 연산자에 대해 쉽게 찾아보려면 http://www.w3schools.com/php/php_operators.asp 를 눌러보면 된다.

728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP] 문자열 자르기 substr  (0) 2015.05.16
음악 재생 1  (0) 2015.03.28
[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
블로그 이미지

Link2Me

,
728x90

PHP continue 문


contiue 명령은 break 와 달리 현재 루프의 진행을 루프의 처음으로 돌리는 역할을 한다.

for 문이나 foreach 문을 탈출하는 명령어는 break 인데

continue 문은 continue 를 만나면 for 문이나 foreach 문의 시작점으로 가라는 의미다.

echo("key : $key, value = $value <br />"); 는 실행되지 않는다는 것이다.

if문의 조건은 참인가 거짓인가를 판별해서 참이면 if문을 수행하고 거짓이면 if문은 수행되지 않는다.

if ($key % 2) 의 의미는 2로 나눈 나머지가 있으면 참이 되어 if문이 실행되고, 나머지가 0인 경우에는 거짓이므로 수행되지 않는다.

$arr = array("zero", "one", "two", "three", "four", "five"); 에서 배열 키를 지정하지 않으면 기본으로 숫자 0부터 시작된다. (배열 키=>값 : 0=>'zero', 1=>'one', 2=>'two', .... )


결과는 배열키 0,2,4 를 가진 zero, two, four 출력

key : 0, value = zero
key : 2, value = two
key : 4, value = four


만약 위의 조건을 if(($key % 2) == 0) 로 설정했다면

결과는 배열키 1,3,5 를 가진 one, three, five 가 출력된다.


그럼 아래 예제에서는 어떤 결과가 나올까?

<?php
$arr = array("zero", "one", "two", "three", "four", "five");
foreach($arr as $key => $value) {
    if($key / 2)
        continue;    // continue 문은 현재 루프를 중단하고 바로 다음 루프로 가라
    echo("key : $key, value = $value <br />");
}
?>


결과는

key : 0, value = zero


<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){  //$cnt가 5가 될때까지 반복한다
    if($cnt == 3){   // 만약 $cnt 가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        continue;  
    }
    echo "$cnt <br />";
}
?>


결과는

0
1
2
지금은 3번입니다.
4
5



<?php
for($cnt=0 ;$cnt <=5 ; $cnt++){   // $cnt가 5가 될 때까지 반복한다
    if($cnt == 3) {  // 만약 $cnt가 3 이면 아래와 같은 문구를 실행한다
        echo "지금은 3번입니다.<br />";
        break;  //조건을 만족하면 루프를 탈출한다.
    }
    echo "$cnt <br />";
}
?>

결과는
0
1
2
지금은 3번입니다.


--------------------------------------------------------------------------------------

foreach 문은 배열값의 수만큼 반복해서 처리한다.

foreach(배열 as $value) {

   처리할 내용

}

또는

foreach(배열 as $key=>$value){  // $key : 배열의 키, $value : 배열의 값

   처리할 내용

}



728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

음악 재생 1  (0) 2015.03.28
[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
블로그 이미지

Link2Me

,
728x90

PHP array(배열)


배열(array)은 한번에 하나 이상의 값들을 담을 수 있는 특별한 변수이다.
PHP 에서는 array() 함수를 사용하여 배열을 만든다.
array 를 사용하면 코딩도 줄여주면서 쉽게 여러 변수를 생성할 수 있는 장점이 있다.
PHP 에는 배열의 세 가지 유형이 있다:
    Indexed arrays - 숫자 인덱스를 갖는 배열
    Associative arrays - 이름 키(named keys)를 갖는 배열
    Multidimensional arrays - 하나 이상의 배열을 포함하는 배열

1. Indexed arrays
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>
array 에 많은 값을 담게 되면 몇 번째의 내용인지 종종 헷갈릴 수 있는데 이러한 것을 막기 위해 count 함수를 이용한다.
그런데 count() 함수는, "요소 개수가 0인 배열"과 "존재하지 않는 배열" 모두 0을 반환하기에 혼란스러운 점이 있다.
이때는 isset() 함수를 사용하여 그 배열이 존재하는지 우선 체크하는 것이 좋다.

<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);    // 오를차순으로 정렬, rsort()는 내림차순으로 정렬
$arrlength=count($cars);  // count() 함수는 배열의 길이(요소의 개수)를 반환하는데 사용된다.

for($i=0;$i < $arrlength; $i++)
{
  echo $cars[$i];
  echo "<br>";
}
?>

2. 연관 배열(Associative Arrays)
연관 배열(Associative arrays)은 값을 할당하는데 이름 키(named keys)를 사용하는 배열이다

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
배열로 표기된 것을 아래와 같이 표기할 수 있다.
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

결과는
Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

=> 를 기준으로 좌측에 있는 부분을 키값이라고 하고, 우측에 있는 부분을 값이라고 한다.

<?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);    // 값에 따라 오름차순으로 연관된 배열을 정렬한다.
foreach($age as $key => $value) {
     echo "Key=" . $key . ", Value=" . $value;
     echo "<br>";
}
?>

ksort() 는 키값에 따라 오름차순으로 연관된 배열을 정렬한다.
arsort() 는 값에 따라 내림차순으로 연관된 배열을 정렬한다.
krsort() 는 키값에 따라 내림차순으로 연관된 배열을 정렬한다.


foreach ($array as $key=>$value) {
    echo '순번 '. ($key+1) . ' 번의 DB idx = '. $value . ', ';
    // DB에 결과를 반영하고자 하는 쿼리문을 적어준다
    $query = 'UPDATE table SET orderNO = '.($key+1).' WHERE idx = '.$value.' LIMIT 1';
    mysql_query($query) or die (mysql_error());
}

3. Multidimensional Arrays
다차원 배열(multidimensional arrays)은 하나 이상의 배열을 포함하는 배열이다.
<?php
$cars = array
   (
   array("Volvo",22,18),
   array("BMW",15,13),
   array("Saab",5,2),
   array("Land Rover",17,15)
   );
 
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>


4. list 함수

list함수는 배열의 값을 배열의 순서대로 여러 개의 변수에 할당 하는 함수이다.


    function getCurrentDate(){
        $year = date('Y');
        $month = date('m');
        $day = date('d');
       
        return array($year, $month, $day);
    }
   
    list($y, $m, $d) = getCurrentDate();   
    print "현재 날짜는 $y / $m / $d 입니다!!";


5. 기타

array_unshift() 함수 : 배열의 맨 앞에 값을 추가하고 싶을 때

 - array_unshift($R, $val); // array_unshift('배열명', '값')


array_push() 함수 : 배열의 끝부분에 값을 추가하고 싶을 때

 -  array_push($R, $val); // array_push('배열명', '값')


array_pop() 함수 : 배열의 끝부분을 제거하고 싶을 때

 - array_pop($R);

728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] 삼항연산자 ?  (0) 2015.03.06
[PHP기초] continue 문  (0) 2015.03.05
[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
블로그 이미지

Link2Me

,
728x90

PHP switch 문


PHP에서는 switch 문의 조건으로 숫자(정수, 실수)와 문자열 모두 가능하다.

n은 대부분 변수를 사용하며, break 문이 없으면 계속 실행된다.



각 실행문의 끝에 break 문을 붙이지 않고 아래처럼 필요한 곳에만 붙일 수도 있다.

break 문이 나올 때까지 다음 실행문이 죽 실행된다.



if 문은 참인지 거짓인지 구분하여 처리하지만,
스위치 문은 참과 거짓을 떠나, 조건의 값이 무엇이냐에 따라 해당 소스를 수행한다.
if문과 switch문은 같은 결과를 가져오지만, 상황에 따라 어떤것을 사용하느냐에 따라 간결한 소스가 되기도 하고, 복잡한 소스가 되기도 한다.


DB에서 읽어온 $R['goods'] 의 상태값에 따라 화면에 내용을 선택하여 뿌려주는 걸 표시한 예제이다.

<td><?php switch($R['goods']) {case "0":echo "미가입";break; case "1": case "2":echo "판매";break; case "6":echo "타사판매";break; case "9":echo "해지";break;}?></td>


switch 문은 PHP 에서 뿐만 아니라, 자바 스크립트에서도 사용되고, C언어 등 여러곳에서 사용되는 기본적인 문법이다.


728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] continue 문  (0) 2015.03.05
[PHP문법] array (배열)  (0) 2015.03.04
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
블로그 이미지

Link2Me

,
728x90

킴스큐에서 사용하는 함수를 잘 몰라서 헤매는 경우가 있어서 아예 찾아보기 쉽게 하려고 여기다 적어논다.

킴스큐 매뉴얼 사이트 http://www.kimsq.co.kr/r/freeboard/13482


//DB-UID데이터
function getUidData($table,$uid)
{
    return getDbData($table,'uid='.(int)$uid,'*');
}
//DB데이터 1ROW
function getDbData($table,$where,$data)
{
    $row = db_fetch_array(getDbSelect($table,getSqlFilter($where),$data));
    return $row;
}
//DB데이터 ARRAY
function getDbArray($table,$where,$data,$sort,$orderby,$recnum,$p)
{
    global $DB_CONNECT;
    $rcd = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):'').' order by '.$sort.' '.$orderby.($recnum?' limit '.(($p-1)*$recnum).', '.$recnum:''),$DB_CONNECT);
    return $rcd;
}
//DB데이터 NUM
function getDbRows($table,$where)
{
    global $DB_CONNECT;
    $rows = db_fetch_array(db_query('select count(*) from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
    return $rows[0] ? $rows[0] : 0;
}
//DB데이터 MAX
function getDbCnt($table,$type,$where)
{
    global $DB_CONNECT;
    $cnts = db_fetch_array(db_query('select '.$type.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT));
    return $cnts[0] ? $cnts[0] : 0;
}
//DB셀렉트
function getDbSelect($table,$where,$data)
{
    global $DB_CONNECT;
    $r = db_query('select '.$data.' from '.$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
    return $r;
}
//DB삽입
function getDbInsert($table,$key,$val)
{
    global $DB_CONNECT;
    db_query("insert into ".$table." (".$key.")values(".$val.")",$DB_CONNECT);
}
//DB업데이트
function getDbUpdate($table,$set,$where)
{
    global $DB_CONNECT;
    db_query("update ".$table." set ".$set.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}
//DB삭제
function getDbDelete($table,$where)
{
    global $DB_CONNECT;
    db_query("delete from ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}

//DB테이블 비우기
function getDbTruncate($table)
{
    global $DB_CONNECT;
    db_query("truncate table ".$table,$DB_CONNECT);
}

//DB테이블 uid 초기화 (auto increment 초기화)
function getDbAlter($table,$where)
{
    global $DB_CONNECT;
    db_query("alter ".$table.($where?' where '.getSqlFilter($where):''),$DB_CONNECT);
}

//SQL필터링 - 다음 패치에 적용예정
function getSqlFilter($sql)
{
    return $sql;
}

728x90
블로그 이미지

Link2Me

,
728x90

자바스크립트 기초

 

자바스크립트는 네스케이프社에서 개발한 HTML 문서 내에 삽입되어 동적인 웹페이지를 구현할 수 있는 스크립트이다.
독립된 응용프로그램의 형태를 지니지 못하는 스크립트 언어이다.
객체를 이용하여 프로그래밍하는 객체기반언어다.

 

자바스크립트는 웹 페이지의 HTML 엘리먼트에 DOM(document object model)이라는 좀 더 정형화되고, 구조화된 정의가 추가되면서 더욱 강력해졌다.
자바스크립트는 스크립트 언어의 특성 상 플랫폼에 독립적이며 모든 웹 브라우저에서 동일한 실행 결과를 얻을 수 있다.
프로그램 코드가 직접 html문서에 삽입되어, 브라우저에서 html파일을 읽을 때 같이 해석되고 실행된다.
컴파일 과정이 필요 없으며, 브라우저만 있다면 실행이 가능하다.
클라이언트에서만 실행되기에 정보를 서버에 보낼 필요 없이 처리할 수 있다.
소스 코드가 노출되어 누구든지 복사하여 사용할 수가 있다.

 

HTML안에 삽입 될 때는 <script> ~ </script>안에 정의한다.

<script> ~ </script>의 위치는
<head>~</head>태그 또는 <body>~</body>태그에 모두 정의 가능하다.

 

   - HTML 페이지의 <body> 태그 안을 자바스크립트에서는 document 라고 부른다.
   - 스크립트 실행문 document.write(); 부분의 document 를 객체(object)라고 부르고

     write() 는 '매서드(method)'라고 부른다.

   - 문장 끝에는 세미콜론';'을 적어서 문장의 끝을 알려주어라.
     자바스크립트에서는 새로운 줄이 세미콜론과 똑같이 동작하여 ';'를 붙이지 않아도 되기는 하다.
     하지만, 한줄에 하나 이상의 문장을 배치하려면 세미콜론 ';' 으로 나눠야 한다.
   - document.write(); 는 PHP의 echo 나 print 명령어와 같다.
     document.write("Hello World");

   <script type="text/javascript" src="node.js"></script>

   는 외부형 js 파일을 불러온다는 의미이다.

 

ㅇ 자바스크립트 주석문 : // 와 /* */
   // : 한 줄 주석 처리. 프로그램 코드 끝에 사용
   /* ~ */ : 한 줄 이상의 주석 처리
   HTML 주석 태크는 <!-- 내용입력 -->

 

ㅇ 문장 끝에는 세미콜론';'을 적어서 문장의 끝을 알려준다

ㅇ 변수 만드는 규칙
    - 사용 가능한 문자는 영문자, 숫자, _(underbar, underscore)이다

    - 숫자로 시작할 수 없다.

    - _(underbar , underscore)를 제외한 !, #, ?, $, @ 등과 같은 다른 특수문자는 올 수 없다.
   - 공백은 허용되지 않는다.
   - 자바스크립트 문법 안에서 규정한 예약어(키워드)는 변수로 사용할 수 없다.  

 

ㅇ 식별자 종류
   - 식별자 뒤에 괄호가 없고 단독으로 사용 : 변수
   - 식별자 뒤에 괄호가 있고 단독으로 사용 : 함수
   - 식별자 뒤에 괄호가 없고 다른 식별자와 사용 : 속성
   - 식별자 뒤에 괄호가 있고 다른 식별자와 사용 : 메서드

ㅇ 이용문법
   - \n : 줄바꿈
   - 문자열 연결은 + 를 사용 : '이런'+'식으로도'+' '+'출력 가능'
   - \t : Tab
   - \' : 작은 따옴표
   - \" : 큰 따옴표
   - \\ : 역슬레쉬(\)
   - %  : 나머지 연산자, alert(5 % 3);
   - 변수 : 값을 저장할 때 사용하는 식별자, 변수선언 var 식별자;

ㅇ 자료형 확인 : typeof 연산자를 이용
   <script>
     alert(typeof('String')); //String
     alert(typeof(123)); //Number
     alert(typeof(true)); //Boolean
     alert(typeof(function(){})); //Function
     alert(typeof({})); //Object
     alert(typeof(abc)); //Undefined : 선언되지 않은 변수를 출력하려고 할 때
                         // 변수를 선언했지만 초기화를 하지 않았을 경우에도 undefined 출력된다
   </script>

 

# null 은 의도해서 비워놓은 값

function getType(data) {
   return Object.prototype.toString.call(data).slice(8,-1);
}

console.log(getType(123));
console.log(getType(false));
console.log(getType(null));
console.log(getType({}));
console.log(getType([]));


ㅇ switch 문
   - 코드를 읽다가 break 를 만나게 되면  switch 문을 빠져 나가게 된다.

ㅇ 삼항 연산자
   - (불 표현식) ? (참일 때 실행되는 문장) : (거짓일 때 실행되는 문장)
   - 삼항연산자는 코드가 너무 복잡해지므로 한 줄로 적을 수 있을 때만 사용하는 것이 좋다.

 

반복문 : for, while, do ~while

ㅇ for 문 (For statement)
   for (초기식; 조건식; 종결식) { // 1. 먼저 초기식을 실행하고 조건식을 비교
      문장              // 2. 조건식이 참이면, 문장을 실행한 후 종결식을 실행하고
   }                  // 3. 다시 조건식을 비교하고, 참이면 문장실행후 종결식을 실행(반복)
   continue;  // continue를 만나면 continue 이전 까지의 문장만이 실행이 되고 다음 반복으로 넘어감

 

ㅇ while 문
   while (불 표현식) {  // 불 표현식이 참인 동안 수행문을 실행하고, 거짓이면 수행문을 실행하지 않는다.
     수행문 ...
   }

 

ㅇ do while 문
   do {
      문장
   } while (불 표현식)  // 무조건 한번 실행 후 반복

 

 

변수 유효범위(Variable Scope)

형변환(Type conversion)
=== 일치연산자
== 동등연산자 : 형변환이 발생한다.

Falsy(거짓 같은 값)
false, '', null, undefined, 0, -0, NaN
1 + undefined  ==> NaN

 

ㅇ 배열

   - 배열은 여러 개의 변수를 한곳에 저장할 수 있는 자료형이다.
   - 자바스크립트에서는 문자열과 숫자, 불, 함수, 객체와 정의되지 않은 자료형까지 총 6가지의 자료형이 존재
   - 배열은 이중 객체의 일종으로, 대괄호([])를 이용해서 생성
   - 배열 안에 입력된 값을 배열 요소라고 부른다.
   - alert(array[1]); // 배열 기호 안에 들어간 숫자를 인덱스(Index)라고 부른다.
   - for (var i in array) 은 for (var i = 0; i < array.length; i++) 와 같은 의미

     <script>
         var lls = document.getElementsByTagName('li');
         for(var i in lls){
             lls[i].style.color = 'blue';
        }
     </script>  

   - 배열 함수 정리 자료는 http://link2me.tistory.com/1458 참조

 

ㅇ 함수
함수란, 미리 만들어 놓은 작은 프로그램으로 혼자서는 실행되지 않고 다른 함수에 의해서 호출(call)을 받아야만 실행 될 수 있는 프로그램

   function 함수이름(매개변수, 매개변수) {
    함수의 수행문 ...
    return 리턴값;
   }

 

내장함수

alert : 가장 많이 사용되는 자바스크립트 메세지창이다.

prompt : 사용자의 입력을 받아 자바스크립트로 인식시킬때 사용하는 내장함수이다.

confirm : 확인과 취소 버튼을 가지는 메세지상자이다.

<script>
  var res;
  res = confirm("계속하겠습니까?");
  if (res == true)
    document.write("진행을 선택했습니다");
  else
    document.write("취소 되었습니다.");
</script>

 


ㅇ Example
   alert(1000 > 100 > 10);
    해설 : 연산 과정은 좌측부터 계산하며, alert(true > 10) -> alert(1 > 10) -> alert(false)
   alert(num++) 은 alert(num); num=num+1;
   alert(++num) 은 num=num+1; alert(num);
   문자열을 입력하는 함수인 prompt()
   var input = prompt('이름을 입력하세요.', '홍길동');alert(input);
   confirm()함수는 사용자가 확인을 누르게 되면 true, 취소를 누르면 false를 리턴한다.
   var input = confirm('수락하시겠습니까?');alert(input);

 

ㅇ 알아두면 좋은 팁

    - window.open 을 클릭으로 열면 팝업이 차단되지 않지만, 그냥 열면 기본은 차단된다.

      <script>
         window.open('demo2.html');
      </script>

    - window.open('test1.html', '_blank', 'width=200, height=100, resizable=yes');

728x90
블로그 이미지

Link2Me

,
728x90

완성형 한글의 경우 한글은 2바이트로 영어는 1바이트로 구성되기 때문에 PHP의 substr() 함수를 쓸 때 한글이 깨지는 경우가 있다. 이런 경우 mb_substr() 함수로 대체하면 된다.


substr ($str, $start_Pos, $length);
$Str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 반환한다

mb_substr ($str, $start_Pos, $length, $encoding);
$str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 $encoding 형식에 맞게 반환한다


mb_substr($str, 0, 10, 'EUC-KR');
mb_substr($str, 0, 10, 'UTF-8');

function strcut_euckr($msg, $limit) {    // 완성형 한글 자르기
    $msg = substr($msg, 0, $limit);
    for ($i = $limit - 1; $i > 1; $i--) {   
        if (ord(substr($msg,$i,1)) < 128) break;
    }
    $msg = substr($msg, 0, $limit - ($limit - $i + 1) % 2);
    return $msg;
}


function strcut_utf8($str, $len, $checkmb=false, $tail='') {  // UTF-8 한글자르기
    /** UTF-8 Format
    * 0xxxxxxx = ASCII, 110xxxxx 10xxxxxx or 1110xxxx 10xxxxxx 10xxxxxx
    * latin, greek, cyrillic, coptic, armenian, hebrew, arab characters consist of 2bytes
    * BMP(Basic Mulitilingual Plane) including Hangul, Japanese consist of 3bytes
    **/
    preg_match_all('/[\xE0-\xFF][\x80-\xFF]{2}|./', $str, $match); // target for BMP
     
    $m = $match[0];
    $slen = strlen($str); // length of source string
    $tlen = strlen($tail); // length of tail string
    $mlen = count($m); // length of matched characters
     
    if ($slen <= $len) return $str;
    if (!$checkmb && $mlen <= $len) return $str;
     
    $ret = array();
    $count = 0;
    for ($i=0; $i < $len; $i++) {
        $count += ($checkmb && strlen($m[$i]) > 1)?2:1;
        if ($count + $tlen > $len) break;
        $ret[] = $m[$i];
    }    
    return join('', $ret).$tail;
}


※ 문자열의 '바이트 수'를 확인하려면 strlen() 함수를, '문자 수'를 조사하려면 mb_strlen() 함수를 사용해야 한다.

영문이나 숫자 등의 싱글 바이트 문자로 구성된 문자열에서는 strlen() 함수와 mb_strlen() 함수의 결과는 같다.

하지만, 멀티바이트 문자를 포함하는 문자열(한국어, 일본어, 중국어 등)에서는 결과가 다르다.



728x90

'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글

[PHP] 쿠키와 세션, 그리고 보안  (0) 2015.05.27
[PHP] 홈페이지 설정 정보 확인  (0) 2015.04.28
PHP 기본 함수  (0) 2015.03.07
IP 체크  (0) 2014.05.18
GET, POST 변수전달  (0) 2014.05.15
블로그 이미지

Link2Me

,
728x90

PHP 변수지정 기초지식


PHP 개발자가 알아야 할 기초적인 지식을 이해하기 쉽게 정리를 했다.

모든 개발에 있어서 실력을 키우는 가장 빠른 방법은 좋은말로 "벤치마킹" 나쁜말로 "모방" 이다.

좋든 나쁘든 가장 빠른 방법임에는 확실하다.
언어는 눈으로 배우는 것이 아니라 직접 경험을 통해 "깨달음" 이 있어야만 자기 것이 된다.

책을 통해 배우거나, 인터넷을 검색하거나, 공개소스를 살펴보거나, 중요한 것은 직접 코딩하고 원리를 이해해 가는 것이다.


변수 : 결과가 바뀔수 있게 할 수 있는 수, 변하는 수, 변할 수 있는 수

         오늘 비가 온다는 예보가 있는데 야구장을 가야하나 말아야 하나.. 오늘의 변수날씨구나..

<?php
$날씨 = '맑음';
if ($날씨 == '비')
{
     echo '우천취소';
}
else {
     echo '야구 정상적으로 진행';
}
?>



1. 변수를 정의할때 반드시 정확한 자료형을 사용한다.

2. 문자열 변수를 정의할때 "상수나 변수를 포함할 것으로 의도하지 않는한" 문자열은 무조건 홑따옴표로 감싸준다.

$array['constant'] = '연관배열';

PHP 해석기는 constant 가 상수가 아니라 "문자열" 이라는 것을 미리 알고 모든 상수중에 constant 를 찾아 헤매는 헛수고를 하지 않는다.

구분

 잘못된 거

올바른 거

 문자열 변수

$string1 = "문자열1";

$string2 = '문자열2';

 정수형 변수

 $int = "1";

 $int = 1;


정수형 변수를 정의하든 문자열변수를 정의하든 습관적으로 쌍따옴표를 사용하는 경우가 많은데 이것은 반드시 당장 고쳐야 할 나쁜 습관이다.


PHP해석기는 위의 두 변수를 메모리에 담을때 완전히 다른 작업을 하는데

$string1"문자열1" 에 변수나 상수가 포함되어 있는지 먼저 찾아내는 작업을 수행한다.

그리고 나서 변수/상수 값에 대한 치환작업을 한 후에야 그 결과값을 $string1 에 담는다.


$string2 은 '문자열2' 이라는 문자열에 대해서 어떠한 작업도 없이 곧바로 $string2 변수에 담는다.


다음 두 개의 SQL 문 처리를 살펴보자. 어떤 걸 써야 할까?

$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";


"(쌍따옴표)는 변수를 해석할 수 있다. 하지만 '(홀따옴표)는 변수를 해석하지 못한다.

홀따옴표로 감싸진 전체를 문자열로 인식하기 때문이다.

이 경우에는

$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";

와 같이 명확하게 Strings에 대해 홀따옴표(single quotes)로 변수를 표시해라.

아니면 아래와 같이 string 형 변수와 integer변수를 명확하게 구분하여 처리하면 전혀 문제되지 않는다.

$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';


Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result ...

와 같은 경고 메시지가 나온다면 어떻게 해야 할까?

$sql 문에 문제가 없는지 echo $sql.'<br/>'; 로 내가 원하는 SQL문으로 만들어지고 있는지 확인하시라.

홀따옴표, 쌍따옴표 관련 처리가 잘못되어 원하는 문자열로 해석되지 않고 있을 수 있다.


내가 사용하는 코딩 예시이다.

<?php
if (!isset($_SESSION)) {
    session_start();
}
// 파일을 직접 실행하면 동작되지 않도록 하기 위해서
if(isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST"){
    @extract($_POST); // $_POST['loginID'] 라고 쓰지 않고, $loginID 라고 써도 인식되게 함
    header('Content-Type: application/json; charset=utf8');
    if(isset($userID) && !empty($userID) && isset($password) && !empty($password)) {
        include_once 'dbController.php';
        require_once 'loginClass.php';
        $c=new LoginClass;
        $user = $c->getUser($userID, $password); // LoginClass에 함수가 정의되어 있다.

        if (is_array($user)) {
            $_SESSION['userID'] = $user['userID'];
            $_SESSION['userNM'] = $user['userNM'];
            $_SESSION['admin'] = $user['admin'];
            echo json_encode(array('result' => '1'));
        } else {
            echo json_encode(array('result' => '0'));
        }
    } else {// 입력받은 데이터에 문제가 있을 경우
        echo json_encode(array('result' => '-2'));
    }
}
?>



상수 : 이미 정해져 있는 불변의 값을 의미한다.

          define("상수명","정의값");

    define('constant','a');
    define('constant','b');

    변수는 처음 선언한 a가 변경되어 b가 되지만, 상수는 여전히 a로 유지된다.


PHP에서 미리 지정한 값을 가지는 것을 상수라고 한다(PHP에서 지정한 상수는 아주많다)
사용자가 지정한 상수도 있다.(define 함수를 이용해서 지정할 수 있다.)

상수명은 일반적으로 대문자를 사용한다.

<html>
    <head>
        <title>constant Test</title>
        <meta charset="UTF-8">
        <meta name="robots" content="noindex,nofollow"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="expires" content="0" />
        <meta http-equiv="pragma" content="no-cache" />
    </head>
    <body>
    <?php
        // PHP_VERSION : PHP 버전 지정한 상수
        // true(참), false(거짓), null(아무값이 없음)
        // PHP_OS : PHP가 실행중인 OS설명하는 상수
        // __LINE__ : 처리중에 있는 파일의 현재 줄 번호
        // __FILE__ : 처리중에 있는 파일의 전체 경로와 이름
        // __DIR__ : 처리중에 있는 파일의 디렉토리
        // __FUNCTION__ : 함수명
        // __CLASS__ : 클래스명
        // __TRAIT__ :  트레이트명
        // __METHOD__ : 클래스의 메소드명
        // __NAMESPACE__ : 현재 네임스페이스 이름

        //사용예 : define("상수명", "정의값");

        define("HI", "안녕!!");
        print HI;
        print '<br />';

        print "현재 사용중인 PHP 버전은 ? ";
        print PHP_VERSION;

        print "<br/> 이 파일의 이름은?  ";
        print __FILE__;

        print "<br/> 수행 중에 있는 코드 라인넘버는?  ";
        print __LINE__;
    ?>
    </body>
</html>



배열 : 일정한 규격에 따라 분리되어진 집합

          김밥 한줄을 썰어서 10조각이 나왔다. 썰어진 김밥은 배열이다. 김밥[0] 은 첫번째 김밥 조각이다.

          - 배열 선언을 $a =[] ; // 배열 초기화 (PHP 5.4 이상 버전에서만 사용할 수 있다)

          - 배열은 인덱스를 사용하지만, 연관 배열은 key 를 사용한다.

          - array("키" => "값") PHP 5.4 이상에서 사용가능


연관배열을 사용하는 예로 가장 흔하게 사용하는 것이 dbconnect.php 에서 DB연결하는 배열인 연관배열 선언하는 것이다.

$db['host'] = "localhost";
$db['name'] = "address";
$db['user'] = "address_root";
$db['pass'] = "autoset";
$db['port'] = "3306";


$dbconn = isConnectDb($db);

function isConnectDb($db){
    $conn = mysqli_connect($db['host'],$db['user'],$db['pass'],$db['name'],$db['port']);
    mysqli_set_charset($conn, "utf8"); 
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    } else {
        return $conn;
    }
}


연관배열의 다른 예제

$data = array('name' => '홍길동', 'age' =>20, 'address'=>'서울');
print $data['name']." | ";
print $data['age']." | ";
print $data['address'];


다차원 배열 예제

//PHP 5.4 이상 버전에서 사용 가능
$member1[] = ['name'=>'홍길동', 'age'=>32, 'tel' => '010-1111-2222'];
print $member1[0]['name'];



함수 : 주어진 변수가 정해진 관계식에 대입된 상황 (결과)
객체 : 모든 사물,동작 등에 접근할 수 있도록 구조화한 형체 (개념)

          자동차는 바퀴,핸들,시트,달리다 로 표현할 수 있다. 바퀴는 자동차를 위한 객체이다.

728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP문법] array (배열)  (0) 2015.03.04
[PHP기초] switch 문  (0) 2015.03.03
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
블로그 이미지

Link2Me

,
728x90

DB 내용을 화면에 출력(이중 for 문)



DB 테이블에 저장된 게시물을 불러다가 화면에 출력하는 PHP 소스이다.

우선 DB에 저장되는 데이터는 <br> 태그로 행구분을 하여 저장한다는 걸 알아야 한다.

파일에서 가져온 걸 분리할 때에는 fgetcsv 함수를 이용하고, Encoding 옵션 등을 처리할 수 있게 조치하면 된다.

행간의 구분은 explode 함수를 사용하여 Line 단위로 구분한다.

최대 몇행인지는 count($lines) 로 파악하고,

이제 한 행에서 구분자로 다시 explode 함수를 이용하여 구분한다.

for 문 안에 for 문은 필요하면 사용하고 필요하지 않으면 사용하지 않아도 된다.

$line 배열은 $line[0], $line[1] 등으로 분리된다. 이 값으로 원하는 결과를 다시 만들어낼 수도 있다.


<?php
////////////////////////////////////////////////////////////////
$lines = explode("<br>", $R['content']);    // line 단위로 분리
for ( $i=0; $i < count($lines) ; $i++) {
    $line = explode(";", $lines[$i]);    // 구분자 기준으로 분리
    for($j=0 ; $j < count($line) ; $j++) {
        if($line[$j] != "") echo $line[$j]."/";
    }
    echo "<br>";
}
?>


for(초기식; 조건식; 종결식){  // for반복문은 반복되는 횟수에 비중이 있다

     반복될 문장 

}

초기식 -> 처음 문장을 실행시킬때 대입시킬 값

조건식 -> 언제까지 실행할지 범위를 지정

종결식 -> 처음값이 조건식에 대해 맞출수있게끔 하나씩 증가/감소



728x90
블로그 이미지

Link2Me

,
728x90

PHP 파일 다루기


fopen() 함수는 PHP에서 파일을 여는데 사용된다

$file=fopen("file.txt","r");

 - 첫번째 파라미터(매개변수) : 열려는 파일 이름

 - 두번째 파라미터(매개변수) : 파일을 열때 어떤 모드(mode)로 열어야 하는지 지정

   . r  : 파일의 처음부분부터 read only

   . r+ : 파일의 처음부분부터 read/write

   . w  : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. write only

   . w+ : 파일을 열고 내용을 초기화하며, 파일이 없으면 생성. read/write

   . a  : 파일을 열고 끝부분에 추가하여 쓰기. 파일이 없으면 생성

   . a+ : 파일을 열고 끝부분에 추가하여 쓰기.

   . x  : 새파일을 만들어서 write only. 만약 파일이 존재하면 Fasle 와 오류를 반환

   . x+ : 새파일을 만들어서 read/write. 만약 파일이 존재하면 Fasle 와 오류를 반환


fclose($file);  // 열린 파일을 닫기 위해서 사용한다.


feof() 함수는 파일의 끝부분에 도달했는지(end-of-file, EOF) 체크하는 함수다.

feof() 함수는 특히 길이를 알 수 없는 데이터를 루프(looping, 반복문)돌때 매우 유용하다.


fgets() 함수는 파일로부터 하나의 줄(single line)을 읽어들일때 사용되며, default 최대 length는 1024

fgetc() 함수는 파일로부터 한 글자씩(single character) 읽어들이는데 사용

fwrite() 함수는 바이너리로 파일에 쓸 때 사용


<?php

$file = fopen("file.txt", "r") or exit("Unable to open file!");

while(!feof($file))   //끝부분에 도달할때까지 읽어들인줄을 출력

  {

  echo fgets($file). "<br />";

  }

fclose($file);

?>

728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

[PHP기초] switch 문  (0) 2015.03.03
PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] fopen 파일 열기  (0) 2014.09.11
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
블로그 이미지

Link2Me

,
728x90

SVN 이란 소스코드 버전관리 도구 라고 할 수 있습니다.

버전 관리 소프트웨어는 조직의 핵심 자산인 소스 코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템으로 이미 다수의 국제 협력 개방 소프트웨어 개발 실무에서도 널리 사용되고 있습니다. 

다음은 버전 관리 시스템을 사용하는 이유를 정리한 것입니다.

 

  • 무언가 잘못되었을 때 복구를 돕기 위하여
  • 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위하여
  • 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위하여
  • 소스 코드의 변경 사항을 추적하기 위하여
  • 소스 코드에서 누가 수정했는지 추적하기 위하여
  • 대규모 수정 작업을 더욱 안전하게 진행하기 위하여
  • 가지내기(Branch)로 프로젝트에 영향을 최소화 하면서 새로운 부분을 개발하기 위하여
  • 접붙이기(Merge)로 검증이 끝난 후 새로이 개발된 부분을 본류(trunk)에 합치기 위하여
  • 많은 오픈 소스 프로젝트에서 어떠한 형태로든 버전 관리를 사용하고 있으므로
  • 코드의 특정 부분이 왜 그렇게 쓰여 졌는지 의미를 추적하기 위하여


정말 오랫만에 SE 자막툴 소스를 다운로드 해 볼 일이 있어서 제 네이버 블로그 글 옮기고 네이버 블로그에서는 삭제했습니다.


프로그램 구하기 : http://tortoisesvn.net/downloads.html  (32비트버전과 64비트 버전중에서 필요한 거 다운로드)

프로그램을 아래 그림처럼 설치합니다.




설치가 완료되고 나서 아이콘을 실행하면 바로 이런 화면이 나오면서 폴더가 뒤에 나옵니다.





TortoiseSVN 을 지원하는 WinMerge 소스 비교 툴에 대한 소개는

http://jwmx.tistory.com/2133 을 읽어보면 도움 됩니다.

WinMerge 소스 비교툴은 소스가 공개되어 있습니다.


최근에 사용해본 소스 비교툴 중에서는 AcroEdit 에 포함된 Diff 기능이 상당히 괜찮습니다.


728x90
블로그 이미지

Link2Me

,
728x90

레지스트리 등록 안될 때


윈도우7이나 8에서는 관리자권한으로 실행해야만 레지스트리 등록이 가능하다.

CMD  창을 띄울 때, 관리자 권한으로 띄우는 방법이다




728x90
블로그 이미지

Link2Me

,
728x90

fopen 파일 열기



FILE *fopen(const char *filename, const char *mode);

// fopen() 함수의 파일 경로, 파일을 열때 모드 옵션

// mode 옵션 의미


r : 읽기 전용으로 열기


w : 쓰기용으로 파일 만들기, 같은 이름이 있다면 덮어쓰기


a : 같은 이름의 파일이 이미 있다면, 그 파일 끝에 추가하여 쓰기, 파일이 없다면 쓰기용으로 파일 생성


r+ : 이미 있는 파일을, 읽기/쓰기용으로 열어 업데이트


w+ : 일기/쓰기용으로 파일 만들기, 같은 이름의 파일이 존재한다면 덮어쓰기


a+ : 파일을 열어서, 끝부분에 추가하기. 파일이 없다면 새로 생성한다.


t : 텍스트 모드로 열기


b : 이진 파일 모드로 열기



위의 모드는 조합이 가능하다.


rb : 바이너리 모드, 읽기 전용 열기


wb : 바이너리 모드, 쓰기용으로 열기




실제 파일을 열고 나면 파일 안의 데이터를 읽어 와야 되는데 그럴 때 사용하는 함수로는 3개가 있다.

$data = fgets($fp, 1000);
fgets() 함수는 파일에서 한 줄씩 읽는다. 이 경우 파일의 줄바꿈 문자나 EOF를 만나지 않는다면 999바이트를 읽을 때까지 진행한다.

$data = fgetss($fp, 1000, "특정 태그");
fgetss() 함수는 읽어들인 문자열에서 PHP와 HTML 태그를 모두 제거한다. 특정 태그를 남겨두려면 적어준다.

$data = fgetcsv($fp, 1000, "delimiter");
fgetcsv() 함수는 파일에서 읽은 문자열을 구분 문자로 나누어서 배열에 저장한다. 가운데는 length 파라미터인데, 이 값은 읽으려는 한 줄의 길이보다 좀 더 길어야 한다.

$data = fgetc($fp);
fgetc() 함수는 파일에서 한번에 한 문자씩 읽어들인다.



<?php

$fp=fopen('./data.txt',"r");

while(!feof($fp)) {   // 파일의 끝인지 아닌지 확인 (false 일 경우 끝)

echo fgets($fp,1000)."<br/>";

}

fclose($fp);

?>



728x90

'Web 프로그램 > PHP 문법' 카테고리의 다른 글

PHP 변수지정 기초지식 ★★★  (0) 2014.12.27
[PHP기초] PHP 파일 다루기  (0) 2014.11.28
[PHP] 문자열 치환하기  (0) 2014.05.10
[PHP] 문자열 나누기  (0) 2014.05.09
[PHP] 문자열 붙이기  (0) 2014.05.08
블로그 이미지

Link2Me

,
728x90

addslashes 함수의 필요성

 

addslashes(string str) 함수는 php와 데이터베이스의 연동 db insert,update 시 필수적으로 해줘야 한다.


addslashes 함수는 매개변수로 넘겨준 문자열 안에 single quote(') 혹은 double quote("), 백슬래쉬(\), NULL 바이트가 포함되어 있다면 해당 문자 앞에 역슬래시(\)를 추가해 주는 함수다.

insert into dbtable (text) values (''사랑해'라고 말해줘요'); // DB 입력시 에러 발생

 

$text = addslashes($text);
insert into dbtable (text) values ('\'사랑해\'라고 말해줘요');

insert into dbtable (text) values ('I\'m sorry, I can\'t help you after all.');

 

DB에 있는 걸 읽어와서 Web 브라우저에 뿌려줄 때는 역슬래쉬(\)를 제거하는 함수인 stripslashes()를 사용한다.
검색어를 입력할 때 \\\ 가 많이 생긴다면 이걸 제대로 처리해주지 못해서 생기는 증상이다.

 

post해서 넘어온 변수를 일일이 addslashes해주는 건 귀찮은 일이고 화면에 출력할 때 stripslashes 하는 것도 상당히 귀찮은 일이다.

array_map() 함수를 사용하면 쉽게 해결된다.

post경우
$data = array_map('addslashes', $data);

select경우
while($data=mysql_fetch_array($row)){
 $data=array_map('stripslashes', $data);
}


대체 문법으로 표현하면


while($data=mysql_fetch_array($row)) :
 $data=array_map('stripslashes', $data);

endwhile;


 

728x90
블로그 이미지

Link2Me

,
728x90

MySQL DB 중복여부 검사하여 없는 것만 추가


자료를 DB에 입력하는 걸 좀 편하게 하려고 중복검사 루틴을 만들어서 테스트를 했는데 계속 자료가 중복으로 들어가 저장된다.

서버 DB 자료를 엑셀로 내보내기 해서 중복검사를 하면 중복된 데이터는 전부 체크하여 표시를 해준다.

어디서 잘못된 걸까? 계속 머리 싸매다가 네이버 검색으로 하는데 자료 찾아도 잘 안나온다.

구글링을 해서 찾았더니 뭔가 힌트가 될만한 것이 검색된다.

넣어서 검사를 했더니 제대로 중복검사 여부를 체크한다.

WHERE eng = '".addslashes($line[0])."'

바로 이 부분 때문에 중복검사를 제대로 못했던 거다.

물론 '(Apostrophe) and " (Quotation mark) 가 없는 한글은 WHERE han = '$line[1]' 으로 검사해도 중복체크를 잘 한다.

중복검사 하는 가장 핵심적인 팁이라 할 수 있는 걸 찾게 되어 너무 기쁘다.


<?
$DB_CONNECT = isConnectDb($DB);
########### DB 연결 ###########
$file=fopen("insert_data.csv","r");
if(!$file){
    echo("Failed to open the file");
    exit;
}

while($line = fgetcsv($file,1000, ";")) { // 구분자는 ; 로 지정, 한줄씩 읽어드린 값을 끝라인까지 계속하라.
    $query = mysql_query("SELECT uid, eng FROM engtable WHERE eng = '".addslashes($line[0])."'",$DB_CONNECT);
    $dupcheck = mysql_fetch_array($query);
    if ($dupcheck['uid']) {
           $dup_line ++;
    } else {     // 중복된 자료가 없을 경우
        $eng = addslashes(trim($line[0]));    // 쿼터(')의 경우 역슬래쉬(\) 처리해야 DB에 저장됨

        $sql = "INSERT INTO $tblName (uid,eng,kor) VALUES (NULL,'$eng','$kor')";
        mysql_query($sql,$DB_CONNECT); // MYSQL DB에 저장
        $ok ++;
        if (($ok % 500) == 0) {
            echo(" $ok 건 저장");
            flush();
            sleep(3); //500개 저장할때마다 3초씩 쉰다.
        }
    $total_line++;
    } //중복체크 END 문
}

if ($dup_line > 0) {
    echo("중복 $dup_line 건 있음");
    echo "<br>";
}
echo("총 $total_line 자료 추가");
fclose ($file);
?>

728x90
블로그 이미지

Link2Me

,
728x90

텍스트 파일안의 내용 찾기

 

텍스트 파일안의 내용을 찾고자 할 경우가 있다.

수많은 파일 중에서 내가 찾고자 하는 검색어가 어느 파일에 있는지 찾기가 쉽지 않아 고생을 한적이 있다.

인터넷 검색하면 상위 검색되는 텍스트 내용 찾아주는 유틸들 사용해보느라고 고생을 했는데 이젠 그럴 필요가 없다.

 

바로 Total Commander 만 이용하면 되기 때문이다.

 

 

 

2번을 선택하면 원하는 파일만 놓고서 파일을 열어서 찾고자 하는 내용을 다시 검색하여 찾기가 매우 편하다.


리눅스 상에서 직접 파일의 내용을 검색하는 방법은 http://link2me.tistory.com/571 참조하면 된다.

 

 

 

728x90

'Web 프로그램 > Web 개발도구' 카테고리의 다른 글

SVN 개념과 Tortoise SVN  (0) 2014.10.12
레지스트리 등록 안될 때  (0) 2014.09.25
[EditPlus]줄 앞/끝 공백제거  (1) 2014.05.13
EditPlus 보기 설정  (0) 2014.05.10
[EditPlus]EditPlus 정규식  (0) 2014.05.10
블로그 이미지

Link2Me

,
728x90

최고관리자 비밀번호 변경


킴스큐RB의 관리자 비밀번호를 분실한 경우에는 데이터베이스에서 수정해 줘야 한다.

물론 사용자 ID도 MySQL 상에서 변경이 가능하다.

update rb_s_mbrid set pw=md5('변경할 비번') where id='관리자아이디';



mysql > use DB명;      // 접속할 DB명으로 이동

mysql >  show tables;   // DB의 테이블 리스트 출력


mysql > update rb_s_mbrid set pw=md5('변경할 비번') where id='관리자아이디';

mysql > flush privileges;    // 변경사항 적용

728x90

'Web 프로그램 > 킴스큐RB' 카테고리의 다른 글

글 등록자만 수정버튼 보이게 하기  (0) 2015.04.01
킴스큐 함수  (0) 2015.03.01
글 등록자만 수정버튼 보이게 하기  (0) 2014.07.19
킴스큐RB 모듈 등록  (0) 2014.07.07
db환경설정 파일위치  (0) 2014.05.04
블로그 이미지

Link2Me

,
728x90

글 등록자만 수정버튼 보이게 하기


KIMSQ RB


<span class="btn00"><a href="<?php echo $g['bbs_modify'].$R['uid']?>">수정</a></span>

위 코드에 아래 처럼, 위아래로 코드를 추가한다

<?php if($R['mbruid'] == $my['uid']):?>
<span class="btn00"><a href="<?php echo $g['bbs_modify'].$R['uid']?>">수정</a></span>
<?php endif?>


728x90

'Web 프로그램 > 킴스큐RB' 카테고리의 다른 글

킴스큐 함수  (0) 2015.03.01
최고관리자 비밀번호 변경  (0) 2014.08.14
킴스큐RB 모듈 등록  (0) 2014.07.07
db환경설정 파일위치  (0) 2014.05.04
킴스큐 RB 모듈 설치 및 삭제  (0) 2014.04.05
블로그 이미지

Link2Me

,
728x90

킴스큐RB 모듈 등록


킴스큐RB 모듈 등록방법은 등록할 파일명을 압축한다.


rb_moulde_압축폴더명.zip



으로 설치를 한다.


_var/table.info.php 파일에 추가한다.



이제 DB에 테이블을 추가한다.



모듈 제작자에 따라서는 테이블도 자동 생성하고 table.info.php 에도 자동추가하도록 만든다.


이제 메뉴를 등록하고 연결을 한다.





이렇게 하면 메뉴가 등록이 완료되고 설치한 모듈을 사용할 수 있다.



728x90

'Web 프로그램 > 킴스큐RB' 카테고리의 다른 글

킴스큐 함수  (0) 2015.03.01
최고관리자 비밀번호 변경  (0) 2014.08.14
글 등록자만 수정버튼 보이게 하기  (0) 2014.07.19
db환경설정 파일위치  (0) 2014.05.04
킴스큐 RB 모듈 설치 및 삭제  (0) 2014.04.05
블로그 이미지

Link2Me

,