웹스쿨
문자열 안의 모든 img 태그안의 src 이미지를 base64 로 치환하기 본문
반응형
상황설명을 드리겠습니다.
얼마전 티스토리 API 와 연동을 했습니다.
제 사이트의 게시글을 티스토리에 전송하려는 작업이었습니다.
순조롭게 다 진행이 되었는데, 마지막에 문제가 발생했습니다.
이미지가 있는 게시글의 경우, 이미지 경로가 제 사이트의 경로로 잡혀있다보니 티스토리로 게시글을 전송했을때 이미지에 엑박이 뜨는문제였습니다.
고민을 해보았습니다.
게시글을 전송하기 전에 img 경로에 url 을 붙여버릴까?
이렇게 하면 이미지가 출력되긴 출력된다. 다만 이미지 트래픽을 모두 내 사이트가 부담하게 됩니다.
안 그래도 가난하고 후달리는 삶에, 호스팅까지 업그레이드 시켜야 하겠느냐? 라는 부담감이 발생하기 시작했습니다.
그러다가 문득 떠오르는 아이디어!
img 를 base64로 만들어서 전송해버리자!
관대한 티스토리는 이해해줄것이다!
그런데 작업이 쉽지는 않았습니다.
그넘의 정규식, 규식이형이랑과의 데이트를 해야하기 때문입니다.
하지만~, 역시 굴링이형은 우리를 실망시켜주지 않았습니다.
굴링이형에게 물어보니 깃허브(github)에 버젓이 개발된 소스코드가 존재했습니다.
개발시간을 훨씬 단축시켜준 구글형님과 깃허브님께 이 영광을 바칩니다.
아래는 소스코드입니다.
사용자는 "절대경로" 와 "내용" 만 본인의 변수로 수정하여 사용하시면 됩니다.
그런데 네이버는 지가 알아서 base64로 만들어 버린던데, 이런거 보면 네이버가 편리하긴 편리해~
- //이미지를 base64 로 모두 인코딩하자.
- $offset = 0;
- $srcDir = 절대경로;
- $template_content = 내용;
- while (preg_match('/<img src="([^"]*)"/i', $template_content, $match, PREG_OFFSET_CAPTURE, $offset) >= 1) {
- $matchTag = $match[0][0];
- $matchOffset = $match[0][1];
- $imgFile = $srcDir.'/'.$match[1][0];
- echo "Unable to find image file {$imgFile}\n";
- return;
- }
- $img_tag = "<img src='data:image/".$ext.";base64," . base64_encode(file_get_contents($imgFile)) . "'";
- // Replace the IMG src link tag with IMG embed content
- // offset for next loop
- }
- //echo $template_content;exit;
이 게시글은
https://webschool.kr/?v=board_view&board_key=7&idx=604
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.
https://webschool.kr/?v=board_view&board_key=7&idx=604
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.
반응형
'개발 경험 Tip > PHP' 카테고리의 다른 글
PHP 엑셀만들기 기본 샘플소스 (0) | 2023.03.31 |
---|---|
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (0) | 2023.03.31 |
네이버 로그인 API(oAuth) 개발 (0) | 2023.03.31 |
php 초단위를 일/시간/분/초 단위로 변경하고자 할때 (0) | 2023.03.31 |
php로 사이트 체류시간 구현하기 (0) | 2023.03.31 |