diff --git src/wp-includes/functions.php src/wp-includes/functions.php
index 0e720ee..2a7f4d5 100644
--- src/wp-includes/functions.php
+++ src/wp-includes/functions.php
@@ -781,10 +781,12 @@ function add_query_arg() {
 			$uri = $args[2];
 	}
 
-	if ( $frag = strstr( $uri, '#' ) )
-		$uri = substr( $uri, 0, -strlen( $frag ) );
-	else
+	$frag = strrchr( $uri, '#' );
+	if ( $frag && false === strpos( $frag, '#038;' ) ) {
+		$uri = substr( $uri, 0, - strlen( $frag ) );
+	} else {
 		$frag = '';
+	}
 
 	if ( 0 === stripos( $uri, 'http://' ) ) {
 		$protocol = 'http://';
