질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

preg_replace("/(@$val)([$\s<&,님])/u", "$1 블라블라  $2", $content)

 

 

현재 이런 정규식을 사용해서 @홍길동을 -> 블라블라 홍길동

으로 변경해서 사용중입니다.

 

그런데 /@홍길동과 같이 /(슬래시)가 바로 앞에 붙은 경우만 제외를 하려고 하는데 잘 안되네요.

 

제가 시도한 건

/[^\/]+(@홍길동)([$\s<&,님])/u

 

이렇게 테스트 사이트에서 해보니 잘 되는데 실제 문서 출력에 적용하니 매칭이 모두 안되는 결과가 나옵니다.

  • profile
    negative lookbehind assertion을 검색해 보시면 될 듯 합니다. $1 $2 등 실제 매칭에 포함시키지는 않고, 앞에 어떤 글자가 없는 경우에만 매칭하라는 명령입니다.
  • profile profile
    해당 검색어로 검색을 해서 제가 이해한 것으로 본다면
    /((?<!\/)@홍길동)([$\s<&,님])/u

    이렇게 했습니다. 시연해 보니 잘 되는데 제가 의도한대로 반영된 거겠죠??
  • profile profile
    네, 맞는 것 같습니다. 프로필 페이지로 링크하는 경우에는 변환하지 않도록 하시려는 거죠?^^
  • profile profile

    네. 맞습니다. ㅎ
    제가 야심차게 준비한 회원 각각의 블로그를 @닉네임 으로 접근 할 수 있는데 본문,댓글에서 호출(언급)을 하기 위해 @닉네임을 사용한 경우 본문 출력전에 자동으로 도메인/@닉네임 링크를 걸어주고 있거든요.

    그런데 제가 이러한 블로그 고유 주소를 설명하려고 글을 작성 하다보니
     와 같이 예시된 주소를 보여주고 싶은 지인이나 다른 곳에 공유해 보라고 작성을 했는데 이게 여기에도 링크가 걸려버리니  /가 붙은 경우만 제외하면 될 것같아 처리했습니다.