>  기사  >  백엔드 개발  >  Golang html.Parse는 &를 포함하도록 href 쿼리 문자열을 다시 작성합니다.

Golang html.Parse는 &를 포함하도록 href 쿼리 문자열을 다시 작성합니다.

王林
王林앞으로
2024-02-09 23:42:081161검색

Golang html.Parse重写href查询字符串以包含&

PHP 편집자 Zimo가 Golang에 대한 작은 트릭을 소개하려고 왔습니다. html.Parse를 사용하여 HTML을 구문 분석할 때 때때로 & 기호를 포함하도록 href의 쿼리 문자열을 다시 작성해야 합니다. 이 기술은 HTML 링크를 처리할 때 더욱 유연하고 편리하며 개발 효율성을 향상시키는 데 도움이 될 수 있습니다. 다음으로 이 기술을 사용하는 방법을 자세히 설명하고 샘플 코드를 제공하여 모든 사람에게 도움이 되기를 바랍니다.

질문 내용

다음 코드가 있습니다:

으아아아

html.render 함수는 다음과 같은 출력을 생성합니다.

으아아아

쿼리 문자열을 다시 작성하고 & 转换为 &(bar와 baz 사이)를 넣는 이유는 무엇입니까?

이 동작을 방지할 수 있는 방법이 있나요?

템플릿 변환을 하려고 하는데 URL이 깨지는 것을 원하지 않습니다.

Solution

html.parse 想要生成有效的 html,并且 html 规范规定 href 속성의 앰퍼샌드 인코딩해야 합니다.

https://www.w3.org/tr/xhtml1/guidelines .html#c_12

sgml 및 xml에서 앰퍼샌드 문자("&")는 엔터티 참조의 시작을 선언합니다(예: ®는 등록 상표 기호 "®"를 나타냄). 불행하게도 많은 html 사용자 에이전트는 html 문서에서 & 기호의 잘못된 사용을 조용히 무시합니다. 즉, 엔터티 참조처럼 보이지 않는 & 기호를 리터럴 & 기호로 처리합니다. XML 기반 사용자 에이전트는 이러한 잘못된 사용을 허용하지 않으며 & 기호를 잘못 사용하는 문서는 "유효"하지 않으므로 이 사양을 따르지 않습니다. 문서가 과거 HTML 사용자 에이전트 및 xml 기반 사용자 에이전트와 호환되도록 하려면 문서에 사용된 & 기호(리터럴 문자로 처리됨)가 그 자체를 엔터티 참조(예: "&")로 나타내야 합니다. 예를 들어 a 요소의 href 속성이 매개변수가 있는 cgi 스크립트를 참조하는 경우 http://my.site.dom/cgi-bin/myscript.pl?class=guest& name=user 而不是 http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user로 표현해야 합니다.

이 경우 Go는 실제로 HTML을 더 좋고 효율적으로 만들어줍니다

즉, 브라우저가 이를 이스케이프하므로 클릭하면 결과 URL은 여전히 ​​정확합니다(&,只有 &:

제외).

으아아아 으아아아

위 내용은 Golang html.Parse는 &를 포함하도록 href 쿼리 문자열을 다시 작성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제