매번 애드온에 의존해야 하는 환경은 아니기에 ( https://xetown.com/topics/1390085 )
필요한 콘텐츠를 가져올 때 그 안에 포함된 사이트 외부 링크를 새 창으로 띄우게 됐습니다.
$server_name = str_replace('.', '\.', $_SERVER['SERVER_NAME']); $pattern = '/(<a\s+href="http:(?!\/\/(?:www\.)?'. $server_name .')[^"]*")>/is'; $_signature = getModel('member')->getSignature('해당 회원 번호'); $result = preg_replace($pattern, '\1 target="_blank">', $_signature);
이렇게만 해도 되는지 확신은 없습니다.
예컨대 도메인 가져올 때 SERVER_NAME으로 가져와도 되는지,
스택오버플로우에서 갖고 온 정규식 패턴이 언제나 잘 먹는 건인지 등등..
어쨌든 일단 테스트 결과로는 잘 작동하네요 :)
SERVER_NAME 쓰지 마세요. XE에는 기본URL이라는 것이 있습니다. 그리고 스택오버플로우에서 복붙하신 것은 https 지원 여부, 프로토콜 상대경로, <a href 사이에 다른 속성이 들어갈 가능성, 예상치 못한 특수문자, 이미 target 속성이 있을 가능성 등을 전혀 감안하지 않고 만든 정규식 같습니다. 대충 된다면 상관없을 수도 있지만, 우회하거나 망가뜨릴 수 있는 방법이 훤히 보이네요;;;