[PHP] 에러 : unterminated string literal

PHP 2018. 2. 8. 18:36




■ 에러 : unterminated string literal




기존 코드를 PHP5에서 PHP7으로 옮기고 아파치 버전도 2.4로 올리면서 발생했다.

단순 스크립트 에러인줄 알았는데, 같은 브라우저에서 똑같이 띄었을때 이런 에러가 발생해서 일단 정리해 본다.


 에러가 발생 하는 경우

<?php

            echo "<script type='text/javascript'>";
            echo "alert('가입되었습니다.\n로그인 페이지로 이동합니다.');";
            echo sprintf("window.location.replace('%s');", $backUrl);
            echo "</script>";

?>



자바스크립의 엔터 기호인 \n 때문에 이런 문제가 발생하였다.

그런데 정상적으로 돌아간 버전도 있다.



두 실행 환경의 차이점

 

서버

PHP Version

에러가 발생하지 않는 경우

Microsoft-IIS/5.0

5.6.30

에러가 발생하는 경우

Apache/2.4.23 (Win64)

7.0.11



 에러가 발생 하지 않는 경우

<?php

            echo "<script type='text/javascript'>";
            echo "alert('가입되었습니다.\\n로그인 페이지로 이동합니다.');";
            echo sprintf("window.location.replace('%s');", $backUrl);
            echo "</script>";

?>



무엇이 차이인지는 잘 모르겠고 기존에 되던 환경에서 무언가 세팅이 되있는것 같지만.

이제 앞으로는 \\n을 기본적으로 붙이고 코딩 하는 습관을 들여야 겠다.





'PHP' 카테고리의 다른 글

[PHP] 에러 : unterminated string literal  (0) 2018.02.08
[PHP] APM 연동과정  (1) 2014.03.18
[PHP] 서버와 클라이언트  (0) 2014.03.18
[PHP] HTML과 PHP  (0) 2014.03.18
[PHP] PHP의 특징  (0) 2014.03.18

[PHP] PHPExcel 파일 업로드 하고 내용 읽어들이기

PHP/PHP Programming 2018. 1. 23. 10:23



■ PHPExcel 파일 업로드 하고 내용 읽어들이기




# 엑셀 파일 업로드 소스코드

 excel_upload.php

<html>

<head>

<title>:: PHPExcel 파일읽기 ::</title>

</head>

<form enctype="multipart/form-data" action="./excel_read.php" method="post">

<table border="1">

<tr>

<th style="background-color:#DCDCDC">파일</th>

<td><input type="file" name="excelFile"/></td>

</tr>

<tr>

<th style="background-color:#DCDCDC">등록</th>

<td style="text-align:center;"><input type="submit" value="업로드"/></td>

</tr>

</form>

</html>




# 엑셀 파일 읽기 소스코드

 excel_read.php

<?php

include "./PHPExcel-1.8/Classes/PHPExcel.php";


$objPHPExcel = new PHPExcel();


// 엑셀 데이터를 담을 배열을 선언한다.

$allData = array();


// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.

$filename = iconv("UTF-8", "EUC-KR", $_FILES['excelFile']['name']);


try {

        // 업로드한 PHP 파일을 읽어온다.

$objPHPExcel = PHPExcel_IOFactory::load($filename);

$sheetsCount = $objPHPExcel -> getSheetCount();


// 시트Sheet별로 읽기

for($i = 0; $i < $sheetsCount; $i++) {


          $objPHPExcel -> setActiveSheetIndex($i);

          $sheet = $objPHPExcel -> getActiveSheet();

          $highestRow = $sheet -> getHighestRow();    // 마지막 행

          $highestColumn = $sheet -> getHighestColumn(); // 마지막 컬럼


          // 한줄읽기

          for($row = 1; $row <= $highestRow; $row++) {


            // $rowData가 한줄의 데이터를 셀별로 배열처리 된다.

            $rowData = $sheet -> rangeToArray("A" . $row . ":" . $highestColumn . $row, NULL, TRUE, FALSE);


            // $rowData에 들어가는 값은 계속 초기화 되기때문에 값을 담을 새로운 배열을 선안하고 담는다.

            $allData[$row] = $rowData[0];

          }

}

} catch(exception $e) {

echo $e;

}


echo "<pre>";

print_r($allData);

echo "</pre>";

?>




# 출력결과 ①




# 출력결과 ②





[PHP] PHPExcel 라이브러리 설치 및 엑셀 출력하기

PHP/PHP Programming 2018. 1. 22. 13:57




■ PHPExcel 라이브러리 설치하기




01. https://github.com/PHPOffice/PHPExcel 사이트에 접속하여 PHP Excel 라이브러리 파일을 다운받자.





02. 다운받은 파일의 압축을 해제한다.













■ PHPExcel 라이브러리 Excel 파일 다운받기



# 소스코드

 php_excel.php

<?php

include "./PHPExcel-1.8/Classes/PHPExcel.php";


$objPHPExcel = new PHPExcel();


$arrTwice = array();

$arrTwice[1] = array("name" => "나연", "position" => "리드보컬, 리드댄서", "birthday" => "09월 22일");

$arrTwice[2] = array("name" => "정연", "position" => "리드보컬", "birthday" => "11월 01일");

$arrTwice[3] = array("name" => "모모", "position" => "서브보컬, 메인댄서, 서브래퍼", "birthday" => "11월 09일");

$arrTwice[4] = array("name" => "사나", "position" => "서브보컬", "birthday" => "12월 29일");

$arrTwice[5] = array("name" => "지효", "position" => "리더, 메인보컬", "birthday" => "02월 01일");

$arrTwice[6] = array("name" => "미나", "position" => "서브보컬, 메인댄서, 서브래퍼", "birthday" => "03월 24일");

$arrTwice[7] = array("name" => "다현", "position" => "리드래퍼, 서브보컬", "birthday" => "05월 28일");

$arrTwice[8] = array("name" => "채영", "position" => "메인래퍼, 서브보컬", "birthday" => "04월 23일");

$arrTwice[9] = array("name" => "쯔위", "position" => "서브보컬, 리드댄서", "birthday" => "06월 14일");


$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue("A1", "NO.")

-> setCellValue("B1", "이름")

-> setCellValue("C1", "포지션")

-> setCellValue("D1", "생일");


$count = 1;

foreach($arrTwice as $key => $val) {

$num = 1 + $key;

$objPHPExcel -> setActiveSheetIndex(0)

-> setCellValue(sprintf("A%s", $num), $key)

-> setCellValue(sprintf("B%s", $num), $val['name'])

-> setCellValueExplicit(sprintf("C%s", $num), $val['position'])

-> setCellValue(sprintf("D%s", $num), $val['birthday']);

$count++;

}


// 가로 넓이 조정

$objPHPExcel -> getActiveSheet() -> getColumnDimension("A") -> setWidth(6);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("B") -> setWidth(12);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("C") -> setWidth(30);

$objPHPExcel -> getActiveSheet() -> getColumnDimension("D") -> setWidth(15);


// 전체 가운데 정렬

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getAlignment() -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);


// 전체 테두리 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A1:D%s", $count)) -> getBorders() -> getAllBorders() -> setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);


// 타이틀 부분

$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFont() -> setBold(true);

$objPHPExcel -> getActiveSheet() -> getStyle("A1:D1") -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("CECBCA");

// $objPHPExcel -> getActiveSheet() -> getRowDimension(1) -> setRowHeight(23);


// 내용 지정

$objPHPExcel -> getActiveSheet() -> getStyle(sprintf("A2:D%s", $count)) -> getFill() -> setFillType(PHPExcel_Style_Fill::FILL_SOLID) -> getStartColor() -> setRGB("F4F4F4");


// 시트 네임

$objPHPExcel -> getActiveSheet() -> setTitle("트와이스");


// 첫번째 시트(Sheet)로 열리게 설정

$objPHPExcel -> setActiveSheetIndex(0);


// 파일의 저장형식이 utf-8일 경우 한글파일 이름은 깨지므로 euc-kr로 변환해준다.

$filename = iconv("UTF-8", "EUC-KR", "트와이스_TWICE");


// 브라우저로 엑셀파일을 리다이렉션

header("Content-Type:application/vnd.ms-excel");

header("Content-Disposition: attachment;filename=".$filename.".xls");

header("Cache-Control:max-age=0");


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5");

$objWriter -> save("php://output");

?>



# 출력결과



위 이미지와 같이 엑셀파일이 생성되는 모습을 확인 할 수 있다.





[PHP] QR코드 이미지 저장하고 띄우기

PHP/PHP Programming 2018. 1. 19. 17:25




■ QR코드를 이미지로 저장하고 가지고오기




먼저 이전 예제에서 사용한 QR코드를 그대로 가져와 보려고한다.





# 소스코드 

 php_qrcode_01.php

 <?php

    include_once "./phpqrcode/qrlib.php";


ob_start("colback");

    

$codeText = "안녕하세요 반갑습니다.";

    

$debugLog = ob_get_contents();


ob_end_clean();


        QRcode::png($codeText);

?>




# 소스코드 ②

 php_qrcode_02.php

<?php
    echo "<img src='php_qrcode_01.php'/>";
?>




# 출력결과












■ QR코드를 이미지로 저장하고 가지고오기




이번에는 생성한 QR코드를 저장하고 이미지를 불러오도록 해 보자.



# 소스코드

php_qrcode_03.php

<?php
    include_once "./phpqrcode/qrlib.php";
       
    $codeContents = "WickedMISO";
   
    $fileName = md5($codeContents).".png";
   
    $filePath = $fileName;
   
    if(!file_exists($filePath)) {
        QRcode::png($codeContents, $filePath);
        echo "파일이 정상적으로 생성되었습니다.";
        echo "<hr/>";
    } else {
        echo "파일이 이미 생성되어 있습니다.\n파일을 지우거나 이름을 바꾸어 실행하세요.";
        echo "<hr/>";
    }
   
    echo "저장된 파일명 : ".$filePath;
    echo "<hr/>";
   
    echo "<img src='".$filePath."'/>";
?>



# 출력결과




# 파일생성






[PHP] PHP QR Code 세팅하기

PHP/PHP Programming 2018. 1. 18. 18:12




샘플코드 : http://phpqrcode.sourceforge.net/examples/index.php




■ PHP QR Code 설치하기




※ QR코드를 생성하기 위해서는 PHP GD가 사용 가능한 상태여야 한다.

    php.ini를 오픈하여 extension=php_gd2.dll 파일을 확인해보자.

   사용이 가능하지 않는 상태라면 extension=php_gd2.dll의 주석( ; ) 을 제거하고 Apache를 재시작한 뒤 진행하자.





01. https://sourceforge.net/projects/phpqrcode/files/ 사이트에 접속하여 PHP QR Code 라이브 러리를 다운받는다.





02. 잠시 기다리고 있으면 phpqrcode.zip 파일을 다운받을 수 있다.

    (몇초정도 기다린 후 다운여부를 묻는 팝업창이 뜬다.)






03. 다운받은 phpqrcode.zip 파일의 압축을 해제한다.










■ PHP QR Code를 사용하여 QR코드 생성하기




이제 본격적으로 QR코드를 생성해보자.



# 소스코드

 php_qrcode_01.php

 <?php


    // 압축을 해제한 phpqrcode 폴더의 grlib.php 파일을 include한다.
    include_once "./phpqrcode/qrlib.php";
   
    // 출력 버퍼 사용 시작!!
    ob_start("colback");
   
    $codeText = "안녕하세요 반갑습니다.";
   
    // 출력 버퍼의 내용을 변수로 저장한다.
    $debugLog = ob_get_contents();

    // 출력 버퍼의 내용을 출력하지 않고, 출력 버퍼를 비우고 종료한다.
    // 출력 버퍼의 내용은 반드시 비워야 한다.
    ob_end_clean();

    QRcode::png($codeText);
?>




# 출력결과




위와같이 QR코드가 정상적으로 생성되는것을 확인 할 수 있다.