[첫화면으로]UseModWiki소스수정/검색어정규표현식에러방지

마지막으로 [b]

1. 검색어 정규표현식 에러방지
1.1. 부작용
1.2. wiki.pl 수정
1.3. 추가 업데이트 내역
1.4. 사용자 의견

1. 검색어 정규표현식 에러방지

상단 메뉴바 검색창에 정규표현식의 특수기호가 들어갈 경우에 에러가 나는 것을 방지.

기본적으로 검색할 때 Perl/정규표현식을 지원한다. 예를 들어 "a[bc]"를 검색어로 넣으면, "ab", "ac" 둘 중 하나 이상이 포함된 페이지를 찾는다. 반대로 얘기하면 "a[bc]"라는 문자열을 찾는게 아니다. 이걸 원할 경우에는 백슬래시를 사용하여 "alatex equation"를 검색하여야 한다. 정규표현식을 모르는 사람에게는 낯설겠지만, 당장 주인장이 정규표현식 사용을 선호하기 때문에 그대로 둔 상태. (차후에는 이것도 옵션으로 달까 싶기도)

그런데 "a["를 검색어로 넣는다면? 여는 대괄호는 있는데 닫는 대괄호가 없기 때문에 문법상 맞지 않아서 서버 에러가 난다.

이렇게, 정규표현식에서 쓰이는 특수 기호나 Perl의 문법 때문에 검색코드가 에러를 내는 경우에는 정규표현식을 사용하지 않고 문자열 그대로를 검색하게 하였다. 즉 "a["를 검색어로 넣는다면 이 경우는 "a[" 문자열 자체를 찾게 된다.

1.1. 부작용

아무래도 익숙치 않은 사람에게는 혼동의 여지가... 옵션으로 정규식 지원 여부를 묻는 체크박스 하나를 더 달까 싶긴 한데, 너무 화면 구성이 지저분해진다 싶어서 망설이는 중. 아니면 "내용출력" 저것을 무조건 on으로 하고 저 자리에 정규식 체크박스를 넣을 법 하기도.

1.2. wiki.pl 수정

sub DoSearch {
    my ($string) = @_;
    my @x;

    if ($string eq '') {
        &DoIndex();
        return;
    }
    print &GetHeader('', &QuoteHtml(Ts('Search for: %s', $string)), '');
    print '<br>';

# 검색어에 정규표현식 에러가 나는 경우는 quote하여 검색 -- 이하 4줄 추가
    eval { "" =~ /$string/i; };
    if ($@) {
        $string = "\Q$string\E";
    }
# 여기까지
    @x = &SearchTitleAndBody($string);
...
}

1.3. 추가 업데이트 내역

1.4. 사용자 의견

이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2008-8-8 2:00 am (변경사항 [d])
1047 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기