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

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

· 5년 전 · 2126

그누보드 안에 있는 여러가지 정규식중  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">

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

 

댓글 작성

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

로그인하기

게시글 목록

번호 제목
10921
10920
10914
10913
10912
10911
10905
10904
10903
10898
10897
10896
10882
10879
10878
10877
10876
10874
10865
10856
10854
10845
10833
10830
10827
10819
10809
10803
10802
10801