Question

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>
Was it helpful?

Solution

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top