프로그램/php2014. 4. 17. 10:57

php는 출력내용을 임시 버퍼에 저장했다가 사용할 수 있는 함수를 지원한다.

 

함수>

ob_start() : 버퍼링 시작

ob_get_contents() : 버퍼에 저장된 내용 가져오기

ob_end_flush()() : 버퍼 내용을 출력

ob_end_clean(); 버퍼링 비우기

 

예제>

<?
ob_start();    // 출력 버퍼링을 시작한다.
 

 // 출력할 내용 - 시작

$str = "okkks.tistory.com";

?>
<html>
<body>
    <div><a href="http://okkks.tistory.com"><?=$str?></a></div>
</body>
</html>
<?
 // 출력할 내용 - 끝
 

//$result = ob_get_contents();    // 버퍼에 저장된 내용을 $result에 저장


ob_end_flush();    // 버퍼 내용 출력하기


//ob_end_clean(); // 버퍼의 내용을 지운다.

 

//echo $result;    // 화면 출력
?>

 

출력:화면>

okkks.tistory.com

 

출력:소스>

<html>
<body>
    <div><a href="http://okkks.tistory.com">okkks.tistory.com</a></div>
</body>
</html>

Posted by 은둔고수
프로그램/php2014. 2. 20. 19:56

header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
php 소스 제일 상단에 위 소스를 삽입한다.

 

이렇게 해도 안된다면 session_start()를 확인해본다. <- 자세히 보기

Posted by 은둔고수
프로그램/php2014. 1. 16. 19:20

php.ini 파일 위치를 먼저 확인한다. <- 더보기

phpinfo()를 php 파일로 만들어서 웹 브라우저를 실행한다.

 

Configuration File (php.ini) Path 이 부분이 설정한 php.ini 파일이 있는 위치이다.

Loaded Configuration File 이 부분은 php.ini 파일이 로딩된 경로이며

none 또는 값이 없으면 설정한 경로에 파일이 없는 경우일 수 있으며

설정한 값이 아닌 기본 설정으로 로딩이 된 경우이다.

 

 

php.ini 파일을 찾아

Configuration File (php.ini) Path 위치에 php.ini 파일을 옮긴 후

설정을 변경해서 적용한 후 아파치를 재 시작한다.

php.ini 설정을 변경해서 apache를 재 시작했음에도 적용이 안된다면 이 두 부분을 확인해본다.

Posted by 은둔고수
프로그램/php2014. 1. 16. 19:00

]# whereis php.ini

또는

<? phpinfo(); ?> 파일을 만들어서 웹 브라우저에서 실행한 후

Configuration File (php.ini) Path 이 부분을 확인한다.

 

 

php.ini 설정을 변경해도 적용이 안된다면 더보기>

Posted by 은둔고수
프로그램/php2014. 1. 16. 18:46

php.ini 파일을 연 후 date.timezone = asia/seoul 설정을 해 준 후 아파치(apache) 데몬을 재 시작한다.

 

 에러 내용 :

Warning: date(): It is not safe to rely on the system's timezone settings.You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in 에러 파일 경로 on line 1

 

php 5.3.x 버전 이후부터 date.timezone을 설정해야 한다. 더보기> php.ini 설정 파일 위치 찾기

Posted by 은둔고수
프로그램/php2014. 1. 3. 21:13

header("Content-type: text/html; charset=utf-8");

UTF-8로 변환

 

header("Content-type: text/html; charset=euc-kr");

EUC-KR로 변환

 

제일 상단에 적용.

Posted by 은둔고수
프로그램/php2013. 12. 12. 18:07

<?
// 문자열 자르기
function cut_str($str, $len, $suffix = '')
{
    $str = strip_tags(stripslashes(trim($str)));

if(strlen($str) > $len)
{
    $cnt = 0;
    $len2 = $len;
    $str2 = '';

for($i = 0; $i < $len2 ; $i++)
{
    $cut = ord(substr($str, $i, 1));

   if($cut > 127)
   {
       $cnt++;
       $str2 .= substr($str, $i, 2);
       $i++;
       $len2++;
   }

   else
   {
       $str2 .= substr($str, $i, 1);
   }

}

}

return $str = $str2 . $suffix;

}


// 사용 예
$ary[] = "홍길동이다";
$ary[] = "honghong";
$ary[] = "11길동01";
$ary[] = "길1동2이3";
$ary[] = "길12동2이3";
$ary[] = "길동122이3";
$ary[] = "abcde";
$ary[] = "고두";
$ary[] = "12341324고두";
$ary[] = "\'\*\":;#!";
$ary[] = "\"홍길동\"";


foreach($ary as $k => $v)
{
    echo "<br />" . $v . " / " . cut_str($v, 3, '..');
}
?>

 

 

한글 문자열 자르기 더보기>

Posted by 은둔고수
프로그램/php2013. 12. 11. 18:44

한글을 포함한 문자열의 일부를 추출할 때,
2바이트 문자의 한바이트만이 들어올 수 있는 문제의 해결은
PHP에서 지원하는 Multibyte String 관련 함수를 사용하는 것이 가장 간단하다.

 

string mb_strcut ( string $str , int $start [, int $length [, string $encoding ]] )

- $start 의 위치가 2바이트문자의 두번째 바이트에 위치하고 있으면 한 바이트 앞에서 시작함.
- $length 만큼 자르고, 마지막 바이트가 2바이트 문자의 첫번째 바이트이면 그 앞에서 자른다.

 

예제)
echo mb_strcut('테스트', 0, 3, 'euc-kr');
==> 테

 

* PHP 설치시 --enable-mbstring 옵션을 주어야 함.

 

한글 문자열 자르기 더보기>

Posted by 은둔고수
프로그램/php2013. 4. 11. 16:42

php를 이용해서

문자열에 일정 숫자 간격마다 글자나 빈칸 등을 삽입하고 싶다면

function str_insert_pattern($str, $len)

{

$ereg = "[^ \n<>]{".$len."}";

return eregi_replace($ereg, "\\0\n", $str);    // 대소문자 구분안함

}

 

사용예>

$str = 'abcdefghijklmnopqrstuvwxyz';

$len = 5;

$ret = str_insert_pattern($str, $len);

echo '결과 : ' . $ret;

결과 : abcde fghij klmno pqrst uvwxy z

 

php 5.3.x 이후부터는 ereg, eregi, ereg_replace, eregi_replace를 더이상 지원하지 않는다.

대체 방법으로 preg_match, preg_replace를 사용할 수 있다.

 

$preg = "/[^ \n<>]{".$len."}/i";    // 대소문자 구분안함 : "/i"

return preg_replace($preg , "\\0\n", $str);

Posted by 은둔고수
프로그램/php2013. 4. 2. 09:46

php 세션을 생성한 후

[파일 : test1.php]

session_start(); <- 소스 맨 위에 위치

$_SESSION['id'] = 'session id';

 

페이지 이동을 해서 확인을 해 보면

[파일 : test2.php]

session_start(); <- 소스 맨 위에 위치

echo "<br />session['uid']=" . $_SESSION['id'];

 

아무런 값이 출력되지 않는 경우가 있다.

결과 : session['uid']=

 

[확인1] 소스 맨 위에 session_start(); 사용했는지 확인한다.

[확인2] session 디렉토리 권한을 확인한다.

세션 디렉토리 위치는 php.ini 설정 파일에서 확인할 수 있다.

예>session.save_path = '/var/lib/php/session"

/var/lib/php/session 디렉토리 권한이 777 또는 707로 되어 있는지 확인한다.

 

이렇게 해도 안된다면 header를 추가해본다. <- 자세히 보기

Posted by 은둔고수