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

그누보드에서 일부정규식이 먹히지 않습니다. 채택완료

코다리 10년 전 조회 4,114

preg_match_all("/<IMG[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $wr_content, $matchs);

 

위 정규식은 그누보드에 글을 등록하는 과정 즉 write_update.head.skin.php 파일에서

해당 컨텐츠 내에서 이미지주소만을 추출하는 정규식입니다.

 

보통은 저렇게 하면

 

$matchs[1] 배열에 이미지 주소가 저장이 되는데...

배열에 담기지조차 않네요.

 

write_update.head.skin.php 에서도 안되고 write_update.php에서도 안됩니다.

write_update.tail.skin.php 도 마찬가지.. 

 

그런데 view.skin.php 및 test.php 파일을 일부러 만들어서 테스트해보면 잘되는군요.

 

왜 글쓰기 관련 파일에서는 안먹힐까요? 

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

답변 3개

채택된 답변
+20 포인트
10년 전

/lib/common.lib.php

2040번째

 

// 에디터 이미지 얻기
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;
}​

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

코다리
10년 전
저 함수를 사용하거나 $pattern = "/<img[^>]*src=[\'\"]?([^>\'\"]+[^>\'\"]+)[\'\"]?[^>]*>/i"; 이 패턴을 이용해봐도 write_update.head.skin.php 등에서는 먹히지가 않네요.

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

10년 전
write_update.php의 19 번째 줄 앞에서 해보세요

 

로그인 후 평가할 수 있습니다

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

10년 전

저 코다리님  write_update.head.skin.php는요

write_update.php의

 101 번째 에 있자나요

아래 소스가 19번째 잇고요

$wr_content = '';
if (isset($_POST['wr_content'])) {
    $wr_content = substr(trim($_POST['wr_content']),0,65536);
    $wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}​

로그인 후 평가할 수 있습니다

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

답변을 작성하려면 로그인이 필요합니다.

로그인