[PHP] 2차원 배열 정렬

PHP
DB에서 결과값을 가져올때 OrderBy를 할 수 있으면 더없이 좋지만 피치못할 상정으로 Query문을 수정할수가 없는 경우가 생깁니다. 이럴경우에 이미 만들어진 결과 값을 사용자에게 보여주기 전에 정렬를 해서 결과를 보여 주면 될것 같습니다. foreach ((array) $result as $key => $value) { $sort[$key] = $value['objNumber']; // 정렬를 위한 키값 } array_multisort($sort, SORT_DESC, $result); //array_multisort($sort, SORT_ASC, $result); 최근에 위 정렬 방법으로 정렬을 함으로 인해서 기존의 코드를 수정하지 않고 결과를 재정렬해서 보여줄수 있도록 해 본적이 있습니다.
Read More

[PHP] 라인 Notify 기능

PHP
API 토큰 생성 사이트 : https://notify-bot.line.me/my/ 위 사이트에서 토큰을 발행 합니다. 아래의 기능으로 PHP 파일을 작성해서 데몬에 올려도 되고, cron에 작업해도 됩니다. $APIURL = "https://notify-api.line.me/api/notify"; $APIKey = "발행한 Key"; if ($imgUrl === null) { $postData = [ "message" => $msg ]; } else { $postData = [ "message" => $msg, "imageThumbnail" => $imgUrl, "imageFullsize" => $imgUrl ]; } $fields = ''; foreach ($postData as $dataKey => $dataValue) { $fields .= $dataKey . '=' . $dataValue . '&'; } rtrim($fields, '&'); $curlOptions = [ CURLOPT_URL => $this->APIURL, CURLOPT_POST => 1, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_POSTFIELDS => $fields, CURLOPT_HTTPHEADER => [ "authorization: Bearer ". $APIKey, "content-type: application/x-www-form-urlencoded" ], ]; $curl = curl_init(); curl_setopt_array($curl, $curlOptions); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl);
Read More

[PHP] date, 날짜 포맷 설정

PHP
년도와 관련된 포멧  문자  설명  예 Y 4자리 숫자로 표시  1999, 2003 y 2자리 숫자로 표시 99, 03 o ISO-8601에 맞는 포맷으로 표시 (Y랑 같으나, ISO 규격에 맞는 W가 포함한 년을 사용) 1999, 2003 L 윤년 여부 윤년 : 1아닐경우 : 0 월과 관련된 포맷 문자  설명 예  F 달을 영어로 표시  January, December M 3자리의 짧은 영어로 표시 Jan, Dec m 0을 앞에 붙인 2자리 숫자  01, 12 n 월을 숫자로 표시 1, 12 t 해당하는 달의 수를 표시 28, 30, 31 일과 관련된 포맷 문자 설명 예 d 0을 앞에 붙인 2자리 숫자 01 ~ 31 j 일을 숫자로 표시 1 ~ 31  z 1년의 n번째 날  0 ~ 365 S 날짜 뒤에 영어 2글자 suffix 추가 st, nd, rd or th (j와 잘 연동됨) 예: 1st, 2nd, 3rd,…
Read More

[PHP] twitter API를 통해서 데이터 얻기

PHP
API 파일 출처 : http://github.com/j7mbo/twitter-api-php 위 사이트에서 API 파일을 획득 하였으며, 해당 기능을 위해서 사용을 합니다.트위터에 글을 올릴수도 있지만 현재 제가 사용하는 기능은 특정 계정의 글을 수집해서 서버에 저장 하기 위해서 필요한 기능입니다.API 파일에는 그 밖에도 많은 기능이 있지만은 전 일방적으로 글 내용을 가져오는 기능으로만 코드를 정리 합니다. /** * API 사용을 위한 기본 설정 **/ $SETTINGS = array( 'consumer_key' => "트위터에서 제공해주는 값", 'consumer_secret' => "트위터에서 제공해주는 값", 'oauth_access_token' => "트위터에서 제공해주는 값", 'oauth_access_token_secret' => "트위터에서 제공해주는 값" ); $URL = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; /** * 트위터에 요청하고 결과값 받기 **/ $getfield = '?screen_name=트위터 계정명&count=받아올 숫자'; $twitterObj = new TwitterAPIExchange($SETTINGS); $response = $twitterObj->setGetfield($getfield)->buildOauth($URL, 'GET')->performRequest(); $response = json_decode($response, true); 이 이후 설정을 자신의 결과값을 보고 필요한 형태로 가공을 하면 됩니다.현재 가공 정보가 제가 독자적으로 가공하는 정보여서 기본 형태를 새롭게 만들경우에 해당 글을…
Read More

[PHP] 랜덤 문자열 생성

PHP
코딩시 가끔 무작위문자열이 필요할때가 있는데 시스템이나 내장함수에서 제공하는 방식은 원하는 기준으로 맞추기가 번거롭다.단순 비교만 사용되는 토큰이나 인증코드 등은 기본난수를 해시화해서 다루면 되지만 암호찾기 등으로 변경된 암호를 사용자에게 알릴 필요가 있을때에는 상황에 따라 정돈된 무작위문자열이 필요한 경우가 있다.랜덤문자를 원하는 조합으로 원하는 길이만큼 생성할 수 있도록 만들어 보았다. function get_random_string($type = '', $len = 10) {     $lowercase = 'abcdefghijklmnopqrstuvwxyz';     $uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';     $numeric = '0123456789';     $special = '`~!@#$%^&*()-_=+\\|[{]};:\'",<.>/?';     $key = '';     $token = '';     if ($type == '') {         $key = $lowercase.$uppercase.$numeric;     } else {         if (strpos($type,'09') > -1) $key .= $numeric;         if (strpos($type,'az') > -1) $key .= $lowercase;         if (strpos($type,'AZ') > -1) $key .= $uppercase;         if (strpos($type,'$') > -1) $key .= $special;     }     for ($i =…
Read More
[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

CSharp, PHP
# 요구사항 1. 전체 상품을 모두 가져와야 한다. 2. 각 상품의 모든 보여주는 이미즈를 모두 저장해야 한다. 3. 각 상품의 고유한 정보는 정리해서 모두 등록한다. # 작업환경 Visual Stuido 2013 C# WinForm, MySQL PHP 7.0.4 (cli) 초기 작업은 C#으로 이줘졌지만은 이후 작업은 Local에서 순수 PHP (cli)만드로 작업이 되었습니다. 1. 각 상품의 대분류에 따라서 이미지 저장을 달리함. 일단 영문자, - 외에는 모두 제거 하여서 Web상에서 사용할 경우에도 주소를 획일한 시켜드림 각 이미지 파일은 원본 사이트의 순수 이름 그대로 인용하여서 처리 하였습니다. 2. 각 상품상세정보 페이지에서 가져온 원본 소스와 해당 정보를 추리하는 JSON값을 추출하여서 별도로 분리하여서, 웹스크래핑 당시의 전체 웹페이지를 눈으로 확인 할 수 있습니다. 아울러 JSON으로 별도로 저장해서 상품상세페이지에서 정보를 한눈에 볼 수 있도록 파일을 만들어 드렸습니다. 아래의 캡쳐 화면은 원본 사이트의 순서 소스를 그대로 저정한 화면이기때문에 바로 로컬에서 웹페지를 확인해…
Read More
[PHP] SHOEZOO 사이트 스크래핑

[PHP] SHOEZOO 사이트 스크래핑

PHP
[PHP] SHOEZOO 사이트 스크래핑 해당 사이트의 정보를 스크래핑 하여서 가공을 하는 작업입니다. 보시는것처럼 다양한 메뉴가 존재 하지만 원하는 정보를 가져오기 위해서는 각 링크의 속성이나 HTML 태그를 분석해야 합니다. 이번에는 간단하게 할 수 없는것이 브랜드와 사이즈도 있고 사용자가 선택할수 있는 정보가 많습니다. 일단은 목록페이지에서는 각 제품의 링크를 획득한 후에 다시 한번더 제품 상세 페이지에 들어가서 정보를 정확하게 수집을 해야 합니다. 제품 상세페이지를 보시면은 이미지도 5장정도 되고, 사이트를 선택할 수도 있어서 해당 옵션을 모두 가져와서 그에 맞게 각 데이터를 가공해야 합니다. 이 작업이 보기보다 상당히 시간이 소요 되며, 해당 작업을 위해서는 DB를 이용하여서 중복이나 동일이름이지만은 브랜드나 옵션이 다른것을 구분해서 작업을 해야 합니다. 스크래핑을 원하시는분은 공지사항을 참조해주시기 바랍니다.
Read More
[PHP] bevmo 스크랩 작업

[PHP] bevmo 스크랩 작업

PHP
[PHP] bevmo 스크랩 작업 PHP로 CLI 모드에서 해당 사이트를 내용을 가지고 오는 작업입니다. 카테고리별로 분리를 하고 다시 해당 카테고리 내에서 제품의 정보와 이미지 개인이 저장 할 수 있도록 저장 하였습니다. 개발환경 : PHP + MySQL 해당 정보를 가져오는 사이트의 일부 캡쳐 화면 입니다. 와인을 전문적으로 판매 하는 사이트입니다. 해당 사이트의 다른 정보 보다는 와인과 그 상세 설명등을 DB화해서 개인이 원하는대로 정보를 가공하는 일이였습니다. 웹을 이용하지 않고 단순하게 Windows에서 PHP를 가동하여서 CLI 모드로 실행되면서 사이트를 접속해서 정보를 가져오는 일입니다. 아래는 전체는 아니며 해당 사이트를 가지와 와서 가공한 DB의 정보를 캡쳐한 화면 입니다. 단순하게 텍스만 가져오지 않고 해당 사이트가 제공하는 이미지 파일을 local에 저장하여서 활용도 할수 있습니다. 각 분류에 맞게 디렉토리를 설정하고 이미지를 이름을 저장하고 관리 할 수 있습니다.
Read More

[PHP] apache htaccess를 사용한 간단한 rest만들기..

PHP
폴더 구조는 다음과 같다.root .htaccess - public .htaccess,index.php위와같이 파일이 위치한다..htaccess를 설정한다. <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule> 어쨌거나 요청이 오면 public 폴더로 보낸다. 뒤에 있는 url정보는 $1을 통해서 public으로 보내진다public폴더에 .htaccess를 설정한다. <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [PT,L] </IfModule>
Read More