문제

Im working with email address which has an ampersand in it, the user wants a 'contact us' link to open up a new message wit their address populated, I normally use href, but the ampersand is causing this not to work, any idea's?

here's what i have at the moment:

<a href="mailto:L&D@gha.org.uk? subject=MessageTitle&amp;" 
        style="font-family: Verdana; font-size: large; font-weight: bold; color: #800000">#GHA Organisation Development</a>
도움이 되었습니까?

해결책

Use &amp; instead of plain &. Your href URL is inside HTML so it needs to be escaped properly to be valid HTML.

다른 팁

Actually, this is not an ambiguous ampersand, so it’s perfectly valid to use the HTML you suggested. The currently accepted answer is incorrect (even though I agree it’s a good idea to always encode ampersands to avoid confusion).

The HTML spec defines ambiguous ampersands as follows:

An ambiguous ampersand is a U+0026 AMPERSAND character (&) that is followed by one or more characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z, and U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z, followed by a U+003B SEMICOLON character (;), where these characters do not match any of the names given in the named character references section.

Entities that don’t end in a semicolon (like &amp) are handled differently in attribute values, though:

If the character reference is being consumed as part of an attribute, and the last character matched is not a U+003B SEMICOLON character (;), and the next character is either a U+003D EQUALS SIGN character (=) or in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z, or U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z, then, for historical reasons, all the characters that were matched after the U+0026 AMPERSAND character (&) must be unconsumed, and nothing is returned.

But this doesn’t apply here since the next character is @.

FWIW, I’ve researched this thorougly and wrote about my findings here: http://mathiasbynens.be/notes/ambiguous-ampersands

I’ve also created an online tool that you can use to check your markup for ambiguous ampersands or character references that don’t end with a semicolon, both of which are invalid. (No HTML validator currently does this correctly.)

http://i.stack.imgur.com/nyGPK.png

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top