게시판 이미지에 width, height 인라인 속성 무시되는 문제 해결 (스타일 속성 X)
meanI
112.♡.169.220
2024-09-05 12:14
404
0
본문
`/eyoom/class/bbs.class.php`
해당 파일에서 `get_thumbnail` 함수 선언된 부분에
```php
preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
$src = isset($m[1]) ? $m[1] : '';
preg_match("/style=[\"\']?([^\"\'>]+)/i", $img, $m);
$style = isset($m[1]) ? $m[1] : '';
preg_match("/width:\s*(\d+)px/", $style, $m);
$width = isset($m[1]) ? $m[1] : '';
preg_match("/height:\s*(\d+)px/", $style, $m);
$height = isset($m[1]) ? $m[1] : '';
preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $img, $m);
$alt = isset($m[1]) ? get_text($m[1]) : '';
```
보시면 이렇게 style 태그 내에 있는 width, height 속성값만 검색하여 width와 height 변수에 넘겨주고 있습니다.
그러나 CKEditor4와 같은 일부 에디터는 이미지 크기 변경 시 style로 width, height 값을 정하지 않고 인라인 속성 `width="" height=""` 이런 식으로 처리하는데, 이렇게 하면 글 열람 시 이미지 크기 값이 무시되어 나옵니다.
이를 해결하기 위해 해당 부분에서 width="숫자"와 height="숫자"도 검출할 수 있도록 코드를 추가하였습니다.
```php
preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
$src = isset($m[1]) ? $m[1] : '';
preg_match("/style=[\"\']?([^\"\'>]+)/i", $img, $m);
$style = isset($m[1]) ? $m[1] : '';
preg_match("/width:\s*(\d+)px/", $style, $m);
$width = isset($m[1]) ? $m[1] : '';
preg_match("/width=[\"\'](\d+)[\"\']/", $img, $m);
$width = isset($m[1]) ? $m[1] : '';
preg_match("/height:\s*(\d+)px/", $style, $m);
$height = isset($m[1]) ? $m[1] : '';
preg_match("/height=[\"\'](\d+)[\"\']/", $img, $m);
$height = isset($m[1]) ? $m[1] : '';
preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $img, $m);
$alt = isset($m[1]) ? get_text($m[1]) : '';
```
이것이 다른 기능에 별 영향을 주지 않는다면 다음 업데이트에 반영 부탁드립니다..ㅎ
추가적으로, EB최신글 사용 시 썸네일 보기에 관한 문제인데, 썸네일 가로 세로를 모두 지정하여 설정을 저장하게 되면 모든 썸네일 이미지를 해당 크기에 맞게 리사이징하여 이미지가 왜곡되는 현상?이 있습니다. 이 부분은 썸네일 가로 크기만 지정하고 세로 크기를 비워두면 원본 이미지 비율에 맞게 리사이징되는데, 다시 한 번 설정을 열었다가 바로 저장하면, 어째선지 세로 값이 자동으로 추가되어 썸네일이 다시 비율 무시하고 리사이징되어 출력됩니다. 이 부분도 확인 가능하시면 확인 부탁드립니다!
댓글목록0