질문/조언질답게시판

구글링을 통해 발견한 것 중

 

preg_replace('@<[/]*a.*?>@is','',$element);

 

요게 가능한 것 확인했는데요. 

요거보다 더 좋은 정규식이나 혹은 이 정규식의 문제점이 있을 수 있을까요? 

간단한 테스트로는 원하는대로 잘 되긴 합니다.

 

<a herf=~~~~>텍스트</a>    -->   텍스트

  • profile

    저렇게 두리뭉실한 정규식은 a 태그가 아닌 다른 것까지 잡아먹어 버릴 수도 있습니다.

    아래와 같이 a 태그 구조만 콕 찝어서 제거하는 것이 안전하겠습니다.

     

    preg_replace('@<a\b[^>]*>(.+?)</a>@is', '$1', $var);

     

    해석:

    1. <a로 시작하고, a 뒤에 다른 알파벳이 없어야 함 (article, audio 등의 태그가 걸리지 않도록)

    2. > 문자를 찾을 때까지 계속 진행

    3. </a> 태그를 찾고, 그 사이에 있는 내용을 괄호로 묶어 추출

    4. 괄호로 묶은 내용이 $1에 담기므로 그것만 남김

  • profile profile
    감사합니다. 요거로 개선해서 사용하겠습니다!