Here is a snippet from my code:
/**
* There is no method of getting the current URL in WordPress.
* Various snippets published on the Web use a combination of home_url and add_query_arg.
* However, none of them work when WordPress is installed in a subfolder.
* The method below looks valid. There is a theoretical chance of HTTP_HOST tampered, etc.
* However, the same line of code is used by the WordPress core, for example in
* @see wp_admin_canonical_url
* so we are going to use it, too
* *
* Note that #hash is always lost because it's a client-side parameter.
* We might add it using a JavaScript call.
*/
$current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
The set_url_scheme
looks overkill: it's very easy to get the scheme without it. However, there is a hook there, so it brings some flexibility. And standardization.