질문을 삭제하지 말아주세요.!
 
1
0
-1

public function test()
{
include "snoopy/Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetch("http://www.naver.com");
$snoopy->results = iconv('ecukr','utf8',$snoopy->results);
$search = "~\<span\>.*\</span\>~i";
preg_match_all($search, $snoopy->results, $test);
return $test;
}

위와 같이 코딩되있고 버튼을 클릭하면 콘트롤러로 이동됩니다


블레이드에서는 meta utf8로 되있구요


이렇게 인코딩을 iconv로 변경해서 사용하려했는데 오류가 납니다


iconv(): Wrong charset, conversion from `ecukr' to `utf8' is not allowed


utf랑 kr 위치도 바꿔봤고 UTF-8 ECU-KR 로도 해보고 ,,, ICONV가 담기는 변수명도 바꿔보도 


여전히 해결못하고 있어요,, 조언좀 해주세요 ㅠㅠ 오류보면 ICONV에 문제가 있는것 같은데


잘모르겠습니다 ㅠㅠ

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      네이버에서 이미 UTF-8로 주지 않나요...?

      UTF-8인 텍스트를 EUC-KR로 디텍트하고 다시 UTF-8로 바꿔서 오류나는 것 같습니다.

      아래 코드처럼 테스트하니 잘 됩니다.

      <?php
      include "Snoopy.class.php";
      
      function test()
      {
          $snoopy = new Snoopy;
          $snoopy->fetch("http://www.naver.com");
          $search = "~\<span\>.*\</span\>~i";
          preg_match_all($search, $snoopy->results, $pregs);
          return $pregs;
      }
      
      print_r(test());
      1. getahead92
        [["<span>\ub274\uc2a4\uc2a4\ud0e0\ub4dc \ubc14\ub85c\uac00\uae30<\/span>","<span>\uc8fc\uc81c\ubcc4\uce90\uc2a4\ud2b8 \ubc14\ub85c\uac00\uae30<\/span>","<span>\ud0c0\uc784\uc2a4\ud018\uc5b4 \ubc14\ub85c\uac00\uae30<\/span>","<span>\uc1fc\ud551\uce90\uc2a4\ud2b8 \ubc14\ub85c\uac00\uae30<\/span>","<span>\ub85c\uadf8\uc778 \ubc14\ub85c\uac00\uae30<\/span>","<span><em><a class=\"hisoff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ucf1c\uae30<\/a><span class=\"atcmp_bar\"><\/span><\/em><a class=\"funoff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ub044\uae30<\/a><\/span>","<span><em><a class=\"hisoff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ucf1c\uae30<\/a><span class=\"atcmp_bar\"><\/span><\/em><a class=\"funoff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ub044\uae30<\/a><\/span>","<span><em><a class=\"hisoff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ucf1c\uae30<\/a><span class=\"atcmp_bar\"><\/span><\/em><a class=\"funoff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ub044\uae30<\/a><\/span>","<span><em><a class=\"hisoff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ucf1c\uae30<\/a><span class=\"atcmp_bar\"><\/span><\/em><a class=\"funoff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ucf1c\uae30<\/a><\/span>","<span><a class=\"_keywordOff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ub044\uae30<\/a><span class=\"atcmp_bar\"><\/span><a class=\"_acOff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ub044\uae30<\/a><\/span>","<span><a class=\"_delDone\" href=\"javascript:;\">\uc644\ub8cc<\/a><\/span>","<span><a class=\"_keywordOff\" href=\"javascript:;\">\uac80\uc0c9\uc5b4\uc800\uc7a5 \ub044\uae30<\/a><span class=\"atcmp_bar\"><\/span><a class=\"_acOff\" href=\"javascript:;\">\uc790\ub3d9\uc644\uc131 \ub044\uae30<\/a><\/span>"]]


        이렇게 꺠져서 나오는데,,, 그럼제 서버상에 문제가 있는 걸까요 ㅠ ?

      2. Juho Choi

        음.. 저건 한글이 깨진게 아니고 데이터가 json 형태로 인코드된 형태인데, 윤석님께서 컨트롤러에서 Array를 리턴해서 json_encode 된 값을 뿌려주는 것으로 생각되네요.

        크롬 콘솔창 열어서 저 값을 붙여넣어보시면 한글로 잘 나올거에요.


      3. getahead92

        죄송합니다,, 힌트주신거 보고 json_decode 살펴보았고

        json_decode($snoopy→results); decode한뒤 실행해 보았지만

        json_decode() expects parameter 1 to be string, array given

        이라는 오류가 나오네요,, 메뉴얼 보고 인터넷 검색하는데 잘안풀립니다,,, 


        참조할만한 사이트가 있을까요 ㅠ?


      4. getahead92

        정말죄송합니다,,

        힌트주실걸로 검색에 메뉴얼 찾아보고 확인해봤는데 말하신대로 콘솔창에서는 array 안에 한글로 나오는데 브라우져 상에는 외계어로 보여서

        json_decode 로 변환 하고자 했는데 파라미터 오류가 나와서

        json_decode(json_encode($snoopy→results),true) 와 같이 이용하는데 실행은 되는데 여전히 한글이 

        보이지 않고있습니다,, 참조할만한 어떤사이트를 좀 알려주시면 안될까요 ㅠㅠ?

      5. Juho Choi

        댓글을 방금 확인했네요.

        아래 코드처럼 해보시면 출력이 잘 됩니다.

        routes/web.php
        Route::get('/test', function () {
            include public_path("Snoopy.class.php");
        
            $snoopy = new Snoopy;
            $snoopy->fetch("http://www.naver.com");
            $search = "~\<span\>.*\</span\>~i";
            preg_match_all($search, $snoopy->results, $pregs);
        
            return view('test', [
                'pregs' => $pregs
            ]);
        });
        test.blade.php
        <table>
            <tbody>
            @foreach ($pregs[0]  as $item)
                <tr>
                    <td>{!! $item !!}</td>
                    <td>{{ $item }}</td>
                </tr>
            @endforeach
            </tbody>
        </table>
      CommentAdd your comment...