PHP에서 문자 변경이나 치환, 공백 처리 할 때 str_replace를 사용 합니다.

<?php
echo str_replace("world","Peter","Hello world!");
?>

실행을 하면 Hello world!가 Hello Peter로 변경되어 있습니다.

1. 스트링(String)

<php
$hello = "hello world";
$hello2 = 'hello world';
echo $hello;

싱글 쿼트, 더블 쿼트 모두 스트링 타입입니다.

2. 인티저(Integer)
음수와 0, 양수입니다.(-2,147,483,648~2,147,483,647)

$number = "12";
echo (int)$number;

(int)를 추가하면 int형으로 캐스팅 됩니다.(형변환)

3.플로트(Float)

$float = 11.2;

4. 불리언(Boolean)

$check = true;
$check = false;

5. 배열(Array)

$arrays = array();

6. 객체(Object)

$color = new color("black", "white");

7. NULL

$is_null = null;

자바스크립트에서는 연관 배열이 없기 때문에 배열은 index와 index의 값을 가질수 있습니다.

var shopping = ["bread", "milk", "cheese", "hummus", "noodles"];
console.log(shopping);

연관 배열 처럼 할려면 javaScript에서는 Object를 사용해야 합니다.


아래는 PHP 배열 입니다.

$association = array("val" => 1, "txt" => "연관배열");
$association = array(
	array("val" => 1, "txt" => "연관1"),
	array("val" => 2, "txt" => "연관2"),
);

 

'tech > PHP' 카테고리의 다른 글

문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
글자 길이가 길 때 글자 줄이는 방법(...)  (0) 2023.10.18
filter_var 숫자(int) 체크  (0) 2023.10.16
특정 날짜의 요일 구하기  (0) 2023.10.07
$str = "글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.";
$s_all = mb_substr($str, 0, 30, 'utf-8');
$suffix = "...";
if(strlen($s_all) >= strlen($s_all)) $suffix = "";
echo $s_all.$suffix;

보통은 텍스트가 길 때 ... 처리를 하게 되는데, 가끔 PHP에서 해야 할 때가 있습니다.
이런 경우 사용하면 됩니다.

문자형인지 숫자형인지 체크하는 방법은 여러가지가 있습니다.

1. is_integer
2. is_int(1번의 alias)
3. filter_var

소개할 것은 filter_var 입니다.
filter_var는 int를 체크하는 용도뿐만이 아니라 filter를 이용해서 여러가지 사용법이 있습니다.
FLOAT 체크 : FILTER_VALIDATE_FLOAT
이메일 체크 : FILTER_VALIDATE_EMAIL
URL 체크 : FILTER_VALIDATE_URL
MAC 어드레스 체크 : FILTER_VALIDATE_MAC

이 외에도 몇 가지가 있습니다.
(참고 URL : https://www.php.net/manual/en/filter.filters.validate.php)

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT)!== false) {
    echo("Variable is an integer");
} else {
    echo("Variable is not an integer");
}
?>

*https://www.w3schools.com/php/filter_validate_int.asp

*제목 검색(pd_name에 index 걸려 있음)
1. LIKE 유형1

SELECT * FROM rb_product
WHERE pd_name LIKE '%테스트%';


index 못탑니다.

2. LIKE 유형2(우 %)

SELECT * FROM rb_product
WHERE pd_name LIKE '테스트%';

 

index 탑니다.

3. LIKE 유형32(좌 %)

SELECT * FROM rb_product
WHERE pd_name LIKE '%테스트';

index 탑니다.

4. 커버링 인덱스

SELECT A.*
FROM (
SELECT pd_idx, pd_name
FROM rb_product
WHERE pd_name LIKE '%테스트%'
#LIMIT 100000, 100
) AS P
INNER JOIN rb_product AS A ON A.pd_idx=P.pd_idx

index 탑니다.

*기타 제목 검색

SELECT * FROM rb_product
WHERE INSTR(LOWER(pd_name),LOWER('테스트'))>0;


index 못탑니다.

*컨텐츠 TEXT data type
-- 데이터 길이 때문에 index key 생성 불가능합니다.

SELECT A.*
FROM (
SELECT pd_idx, pd_contents
FROM rb_product
WHERE pd_contents LIKE '%테스트%'
#LIMIT 100000, 100
) AS P
INNER JOIN rb_product AS A ON A.pd_idx=P.pd_idx

pd_contents 인덱스가 걸리지 않기 때문에 인덱스 못탑니다.

============================
*FULL TEXT index
cafe24 웹호스팅 mysql innodb_ft_min_token_size
show variables like 'innodb_ft_min%'
기본 3글자로 세팅이 되어 있는 상태이고, 웹호스팅이기 때문에 변경이 안됩니다.

cafe24 웹호스팅 사용하는 이상은 레코드의 양 많을 때는 TEXT  data type에 인덱스를 걸수 없기 때문에 TEXT data type의 검색은 지양해야 한다고 판단 됩니다.

 

'tech > SQL' 카테고리의 다른 글

백엔드 처리, 프로시저 처리  (0) 2024.07.15
mwb 확장자는?  (0) 2017.05.29
날짜 형태로 변환  (0) 2016.10.04
[MySQL] 컬럼 데이터 개수 조회  (0) 2015.12.09
테이블에 같은 값이 있으면 update, 없으면 insert 하기  (0) 2013.11.07

년월일로 요일 구하는 함수

<?php
function get_yoil($date){
	$arr = array("일", "월", "화", "수", "목", "금", "토");
	return $arr[date("w", strtotime($date))];
}

echo get_yoil("2022-10-08");

date("w") : 요일의 숫자 표현 입니다.

0 : 일요일
6 : 토요일

입력 받은 변수 값이 영문, 숫자만으로 되어 있는지 체크

<?php
if(preg_match('/^[a-zA-Z0-9]+$/', $nickname)){
	//올바른 닉네임 규칙
}else{
	//영문, 숫자 외에 다른 문자가 포함된 닉네임이 있을 때
}

 

'tech > PHP' 카테고리의 다른 글

filter_var 숫자(int) 체크  (0) 2023.10.16
특정 날짜의 요일 구하기  (0) 2023.10.07
템플릿 언더바의 루프문(loop) #2  (0) 2023.10.03
템플릿 언더바(Template Underscore) #1  (0) 2023.10.02
LG xpay 결제 모듈 연동 모바일  (0) 2018.03.19

*index.php

<?php
$tpl=new Template;
$tpl->define(array(
  'contents'  =>'index.tpl',
	'body'  =>'inc/body.tpl',
));

$data = sql_list("쿼리내용");
$tpl->assign('data', $data);
$tpl->print_('body');

*index.tpl

<ul>
	{@ data}	
	<li>hi{.seq}</li>
    {/}
</ul>

tpl에 php 구문을 넣어도 에러는 나지 않습니다만 tpl 파일은 View(V)만을 하기 때문에 PHP 구문이 필요 없습니다.

@ 로 loop문을 대체하고 있습니다.

{/}는 end입니다.

{.seq}는 data에 있는 배열명입니다.

 

'tech > PHP' 카테고리의 다른 글

특정 날짜의 요일 구하기  (0) 2023.10.07
영문, 숫자만 체크(유효성 검사)  (0) 2023.10.04
템플릿 언더바(Template Underscore) #1  (0) 2023.10.02
LG xpay 결제 모듈 연동 모바일  (0) 2018.03.19
카카오톡 API  (0) 2017.11.30

 

5년 정도 전에 한 개발 에이전시에 근무하게 되었을 때 였습니다.

MVC패턴으로 개발 방식이 유행이었던 당시에는 Laravel과 CodeIgniter, Symfony, Zend와 같은 프레임워크만 알던 때인데, 템플릿 언더바(https://tpl.xtac.net/)를 사내에서 사용하는 분위기였습니다.

MC는 PHP에서 작업하고 V는 tpl 파일에서 작업하는 방식입니다.

컴파일이 되기 때문에 파일명.tpl.php으로 컴파일 되어서 빠른 처리를 할수 있다고 합니다.

템플릿 언더바와는 다른 템플릿인 스마티와 비교한 페이지가 있습니다.

https://tpl.xtac.net/benchmark/

 

Template_

 

tpl.xtac.net

 

아래의 코느는 공식 사이트에 있는 예제 입니다.

<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$tpl->assign(array(
    'title'  =>'First Template_',
    'content'=>'Fill me in',
));
$tpl->print_('index');

line 4 : V(view)가 될 index file을 지정 합니다.
배열도 가능 합니다.

$tpl->define(array(
    'contents'  =>'index/index.tpl',
	'body'  =>'inc/body.tpl',
	'top'  =>'inc/top.tpl',
));

 

'tech > PHP' 카테고리의 다른 글

영문, 숫자만 체크(유효성 검사)  (0) 2023.10.04
템플릿 언더바의 루프문(loop) #2  (0) 2023.10.03
LG xpay 결제 모듈 연동 모바일  (0) 2018.03.19
카카오톡 API  (0) 2017.11.30
웹 개발 환경  (0) 2017.03.08

+ Recent posts