정규식 질문드립니다. 채택완료
Nu12
9년 전
조회 2,095
아래 소스를 실행하면 'naver.com daum.net nate.com' 를 제외하고는 모두 'http://도메인">http://도메인' 으로 변경됩니다.
'naver.com daum.net nate.com' 등 'http://www.%27" target="_blank">www.' 가 없는 경우에도 'http://도메인">http://도메인' 으로 변경되도록 하기 위해서는 어떻게 하면 좋을지 자문 부탁드립니다.
$str = "<a href="<a href="http://www.naver.com" target="_blank" rel="noopener noreferrer">http://www.naver.com</a>">www.naver.com</a> naver.com daum.net <a href="<a href="http://www.daum.net" target="_blank" rel="noopener noreferrer">http://www.daum.net</a>">www.daum.net</a> nate.com <a href="<a href="http://www.nate.com" target="_blank" rel="noopener noreferrer">http://www.nate.com</a>">www.nate.com</a> <a href="<a href="http://www.naver.com" target="_blank" rel="noopener noreferrer">http://www.naver.com</a>"><a href="http://www.naver.com" target="_blank" rel="noopener noreferrer">http://www.naver.com</a></a> <a href="<a href="http://naver.com" target="_blank" rel="noopener noreferrer">http://naver.com</a>"><a href="http://naver.com" target="_blank" rel="noopener noreferrer">http://naver.com</a></a> <a href="<a href="http://daum.net" target="_blank" rel="noopener noreferrer">http://daum.net</a>"><a href="http://daum.net" target="_blank" rel="noopener noreferrer">http://daum.net</a></a> <a href="<a href="http://www.daum.net" target="_blank" rel="noopener noreferrer">http://www.daum.net</a>"><a href="http://www.daum.net" target="_blank" rel="noopener noreferrer">http://www.daum.net</a></a> <a href="<a href="http://nate.com" target="_blank" rel="noopener noreferrer">http://nate.com</a>"><a href="http://nate.com" target="_blank" rel="noopener noreferrer">http://nate.com</a></a> <a href="<a href="http://www.nate.com" target="_blank" rel="noopener noreferrer">http://www.nate.com</a>"><a href="http://www.nate.com" target="_blank" rel="noopener noreferrer">http://www.nate.com</a></a>";
$str = preg_replace("/(^|[\"'\s(])(www\.[^\"'\s()]+)/i", "<a href="<a href="http://\\2" target="_blank" rel="noopener noreferrer">http://\\2</a></A>"><a href="http://\\2</A>" target="_blank" rel="noopener noreferrer">http://\\2</A></a></a>", $str);
echo $str;
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
9년 전
다음처럼 해 보세요.
$str = preg_replace("/(^|[\"'\s(])([^\"'\s(https?:\/\/)]+)/i", "" target="_blank" rel="noopener noreferrer">http://\\2">http://\\2", $str);
로그인 후 평가할 수 있습니다
답변에 대한 댓글 5개
N
Nu12
9년 전
알려주신 바와 같이 해보니, 'http://www.naver.comhttp://naver.comhttp://daum.nethttp://www.daum.nethttp://nate.comhttp://www.nate.com' 이 부분이 1개 링크로 잡히네요..^^
�
네이비칼라
9년 전
그럼 한칸 뛰면 되죠 ㅋㅋㅋ
"http://\\2</A>" => " http://\\2</A>" 이렇게 해 보시죠 ㅎㅎ
"http://\\2</A>" => " http://\\2</A>" 이렇게 해 보시죠 ㅎㅎ
N
Nu12
9년 전
해결했습니다. 고맙습니다^^
N
Nu12
9년 전
'www', 'http' 여부와 상관없이 모두 링크로 수정됩니다만, 문제는 일반 텍스트까지 전부 변환됩니다..
→ ex) test http://Comment http://테스트 http://댓글 http://www.daum.net http://daum.net http://www.daum.net http://daum.net http://www.naver.com http://naver.com http://www.naver.com http://naver.com
지금 확인해보니 상기 내용과 같은 문제가 있네요 ..ㅠㅠ
→ ex) test http://Comment http://테스트 http://댓글 http://www.daum.net http://daum.net http://www.daum.net http://daum.net http://www.naver.com http://naver.com http://www.naver.com http://naver.com
지금 확인해보니 상기 내용과 같은 문제가 있네요 ..ㅠㅠ
�
네이비칼라
9년 전
주어진 예제만 가지고 눈으로 풀고 있습니다.
단서를 주기 위함이죠.
여러 가능한 경우를 생각하고 풀고 있지는 않다는 겁니다.
다음 처럼 해 보세요.
$str = preg_replace("/(^|[\"'\s(])([^\"'\s(https?:\/\/)]+)\.\w+/i", " http://\\2</A>", $str);
단서를 주기 위함이죠.
여러 가능한 경우를 생각하고 풀고 있지는 않다는 겁니다.
다음 처럼 해 보세요.
$str = preg_replace("/(^|[\"'\s(])([^\"'\s(https?:\/\/)]+)\.\w+/i", " http://\\2</A>", $str);
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인