a 태그만 제거하고 a태그가 감싸는 text만 남기는 php 정규식
CMS/프레임워크 | 사용안함 |
---|---|
개발 언어 | 사용안함 |
구글링을 통해 발견한 것 중
preg_replace('@<[/]*a.*?>@is','',$element);
요게 가능한 것 확인했는데요.
요거보다 더 좋은 정규식이나 혹은 이 정규식의 문제점이 있을 수 있을까요?
간단한 테스트로는 원하는대로 잘 되긴 합니다.
<a herf=~~~~>텍스트</a> --> 텍스트
댓글 2
저렇게 두리뭉실한 정규식은 a 태그가 아닌 다른 것까지 잡아먹어 버릴 수도 있습니다.
아래와 같이 a 태그 구조만 콕 찝어서 제거하는 것이 안전하겠습니다.
preg_replace('@<a\b[^>]*>(.+?)</a>@is', '$1', $var);
해석:
1. <a로 시작하고, a 뒤에 다른 알파벳이 없어야 함 (article, audio 등의 태그가 걸리지 않도록)
2. > 문자를 찾을 때까지 계속 진행
3. </a> 태그를 찾고, 그 사이에 있는 내용을 괄호로 묶어 추출
4. 괄호로 묶은 내용이 $1에 담기므로 그것만 남김