WEB/PHP 25

PHP 크롤링 일반페이지와 XML파싱할때

가장 많이 사용하는 형태로 curl과 simplexml_load_file의 간단 사용법 $url = "파싱할 주소"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 0); // 0이 default, POST일 경우 1 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // https사용유부 curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt(..

WEB/PHP 2022.07.04

워드프레스 별도 mysqli_query 등 sql 작업을 필요로 할때

워프 대량 작업을 할 시기에 워드프레스 내부에서 워프와는 별개로 만든 테이블에 select나 insert 등 별도의 작업이 필요했음 일반 mysqli_connect로 사용해도 무방하나 워프내에서 워프만의 기능으로 사용하고자 할때라면 이렇게 사용하자. 1. 단일 변수의 결과값 리턴일 경우 2. 다수의 행으로 결과값을 리턴할 경우 3. INSERT문 INSERT문은 일반적인 mysql문과 다르다. 첫번째 테이블명, 2번째에는 컬럼명과 값을 배열로 구성하며, 3번째 배열은 값마다 순차적으로 format을 배열로 입력한다. (%s => string, %d => 정수, %f => 실수) 4. UPDATE문

WEB/PHP 2022.06.30

PHP REMOTE_ADDR로 사용자의 ip가 ipv4인지 ipv6인지 확인하는 방법

기존 흔히 알고 있는 ipv4 주소 체계가 고갈되는 문제로 인해 기존 32비트였던 ip주소 체계에서 -> 128비트의 무제한에 가까운 주소체계가 할당되고 있는데 이것이 ipv6 주소. ipv6주소는 16진수로 0000: 형태로 총 8개의 구조로 연결되고 앞부분 4개는 네트워크 주소, 뒷부분 4개는 인터페이스 주소라고 한다. 대충 쉽게 말해 12년도쯤 한국에 할당된 ipv4가 112,231,936개라 하는데 인터넷에 접속되는 컴퓨터의 증가로 주소가 모자르기 때문에 더 많은 주소 체계인 ipv6주소를 할당하고 있다는 이야기 (실제 ipv6주소는 할당 가능한 수치가 340,282,366,920,938,463,463,374,607,431,768,211,456개라고 한다 +_+;) 작업중 특정 대상에 따른 ip주..

WEB/PHP 2022.06.29

RSS 크롤링시 닫힘태그가 아닌 태그의 요소 파싱하기

특정 사이트의 RSS를 가져오려다가 위와 같이 태그 안의 내용이 아닌 단일 태그형태의 요소를 가져와야 하는 상황 php 코드 $url = "RSS 경로"; $xml = simplexml_load_file($url); foreach($xml->channel->item as $item) { echo $item->title."\n"; echo $item->children("media", true)->content->attributes()['type']."\n"; echo $item->children("media", true)->content->attributes()['url']."\n"; } children으로 태그를 찾고 그 안의 요소를 찾을수가 있다. 늘 그렇듯이 나중에 또 쓰게 될거 같아서 기록

WEB/PHP 2021.08.31

[PHP] 문자열 자르기 한글깨짐 substr 말고 iconv_substr

보통 개발일을 하면서 문자열을 잘라야 할 경우 퍼블단에서 div로 overflow:hidden 을 사용하는게 대부분이다. (필자는 그렇다.) 하지만 PHP에서 문자열을 잘라야 할때는 substr 함수를 사용하는데 캐릭터셋이 UTF-8이고 아이디나 닉네임 뒤에 몇자리를 가려야 할 상황에 substr을 사용하다보면 한글깨짐 현상이 있을수 있다. 예를 들어 $nickname = "이지코드이지코드"; echo substr($nickname, 0, 5); // 이�� 이렇게 출력된다. 이는 euc-kr에서는 한글을 2바이트로 처리 / utf-8에서는 3바이트로 처리한다고 한다. 하여 문자깨짐을 방지하려면 substr 말고 다른 함수를 써야 한다. 대체 함수로 mb_substr이 있는데 이 함수는 mb_string..

WEB/PHP 2016.11.09

[PHP] fopen을 사용한 txt파일로 로그남기기

외주업체와의 통신상에 문제가 생겼다. 로그를 남겨야 하는 상황, 즉 디비를 쓰기엔 무리라고 판단 부분적으로 로그를 남겨 문제점을 파악하기 위해 단기적으로 로그를 쌓아야 할 경우 txt파일에 로그를 기록하여 분석하는데 사용하도록 한다. php의 fopen이라는 함수를 사용하여 이미 만들어져있는 txt파일을 오픈하고 기존내용과 내려쓰기를 이용한 내용 축적을 한다. $log_txt = $userid."|".$datetime."|".$data."|".$ip."|".$idx; $log_dir = "/home/www/data/log"; $log_file = fopen($log_dir."/log.txt", "a"); fwrite($log_file, $log_txt."\r\n"); fclose($log_file); $..

WEB/PHP 2014.02.11

[PHP] 외부 사이트의 xml긁어오기

rss로 제공하는 xml이 있을시본 사이트로 해당 xml을 파싱하여 가져와야 할 경우 $xml = "xxx.com/aaa.php"; $doc = new DOMDocument();$doc->load($doc); if(!$doc) { // 불러올수 없다면 echo "not";} else { $items = $doc->getElementsByTagName('item'); // 반복되는 item태그중 $records = array(); foreach($items as $item) { $record = array(); if($item->childNodes->length) { foreach($item->childNodes as $i) { if($i->nodeName != 'title' && $i->nodeName ..

WEB/PHP 2013.01.08

[PHP] 문자여러개를 str_replace하려 할때

여러번 str_replace로 문자를 치환하려 한다. 예를 들어 0000-00-00 00:00:00의 datetime 형태를 숫자로 연이어 쓴다고 가정할때(물론 date()함수로 뽑아올적에 만들면 되지만, 디비안에 저런형태로 있다고 가정하자.) $sql = "select * from tblName where idx = '1' limit 1"; $row = sql_fetch($sql); echo $row['wr_datetime']; // 2012-08-06 09:10:10 $str = array("-"," "); $res = str_replace($str, "", $row['wr_datetime']); echo $res; // 20120806091010 위와 같이 치환하려 하는 문자를 배열로 만들고그 배열..

WEB/PHP 2012.08.06

[PHP] 엑셀(excel) 다운로드 기능 만들기

특정 쿼리에 대한 MySQL의 결과값을 엑셀로 다운로드 가능하도록 만들려고 한다. header( "Content-type: application/vnd.ms-excel" ); header( "Content-type: application/vnd.ms-excel; charset=utf-8"); header( "Content-Disposition: attachment; filename = invoice.xls" ); header( "Content-Description: PHP4 Generated Data" ); $sql = "select * from tblName order by reg_date desc"; $result = mysql_query($sql); // 테이블 상단 만들기 $EXCEL_STR = ..

WEB/PHP 2012.03.27