테스트 사이트 - 개발 중인 베타 버전입니다

[정규식] 재미난? 정규식 Again #16 - 속성편

· 5년 전 · 2130

그누보드 안에 있는 여러가지 정규식중  thumbnail관련 정규식을 찾아 봅니다.

 

lib/common.lib.php

https://github.com/gnuboard/gnuboard5/blob/84dd9f07661a41730cddee4816b8ec806665ca2c/lib/common.lib.php#L2309

[code]

// 에디터 이미지 얻기
function get_editor_image($contents, $view=true)
{
    if(!$contents)
        return false;

    // $contents 중 img 태그 추출
    if ($view)
        $pattern = "/<img([^>]*)>/iS";
    else
        $pattern = "/<img[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i";
    preg_match_all($pattern, $contents, $matchs);

    return $matchs;
}

[/code]

각 게시판에 포함된 이미지 태그를 

 

lib/thumbnail.lib.php 에서 

 

get_list_thumbnail

get_view_thumbnail 중에서.

 

https://github.com/gnuboard/gnuboard5/blob/84dd9f07661a41730cddee4816b8ec806665ca2c/lib/common.lib.php#L2309

 

[code]

        $img = $matches[1][$i];
        preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
        $src = $m[1];
        preg_match("/style=[\"\']?([^\"\'>]+)/i", $img, $m);
        $style = $m[1];
        preg_match("/width:\s*(\d+)px/", $style, $m);
        $width = $m[1];
        preg_match("/height:\s*(\d+)px/", $style, $m);
        $height = $m[1];
        preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $img, $m);
        $alt = get_text($m[1]);

[/code]

 

각 게시판 글에 포함 된 이미지 태그중에서 attribute를 뽑아내는 정규식입니다.

src, style, alt를  width, height는 style안에서 뽑아냅니다.

 

각각을 찾아서 이미지는 썸네일을 만들고 원본이미지를 포함해서 아래와 같은 링크를 만듭니다.

 

[code]

<a href="//sir.kr/bbs/view_image.php?bo_table=cm_pix&amp;fn=654829463_lOzcMPxZ_5b0f91e594696877dc2950317a83deb4eef1e1cd.jpeg" target="_blank" class="view_image">

     <img src="//sir.kr/data/file/cm_pix/thumb-654829463_lOzcMPxZ_5b0f91e594696877dc2950317a83deb4eef1e1cd_730x548.jpg" alt="">

</a>

[/code]

 

대략 아래와 같은 이미지를 찾아서 뽑아내는 것입니다.

 

지금까지 배운 내용으로 한 문장의 정규식이 필요합니다. (위의 정규식도 참조)

그룹네임은 $src, $style, $width, $height, $alt 입니다. 

 

그런데 이것이 정규식으로 가능할까요?

 

-----------------------------------

<img style="width:100%; height:100%;display:none" src="http://test.com/data/editor/testimage.jpg" alt="test_img">
<img alt="test_img" style="width:100%; height:100%;display:none" src="http://test.com/data/editor/testimage.jpg">
<img src="http://test.com/data/editor/testimage.jpg" style="width:100%; height:100%;display:none"  alt="test_img">

-----------------------------------

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
10793
10783
10781
10777
10775
10761
10757
10748
10743
10740
10725
10723
10718
10711
10705
10682
10665
10657
10645
10643
10641
10630
10624
10609
10605
10597
10590
10580
10579
10576