drupal_parse_url()
does not correctly parse External URLs and fails to get the path, query and fragment.
Example code:
$url = 'http://drupal.org/?q=node/123456#comment-form';
$uri1 = drupal_parse_url($url);
var_dump($uri1);
$uri2 = parse_url($url);
var_dump($uri2);
Drupal core drupal_parse_url()
:
http://drupal.org/node/123456#comment-form
- FAIL:
array(3) {
["path"]=> string(42) "http://drupal.org/node/123456#comment-form"
["query"]=> array(0) { }
["fragment"]=> string(0) ""
}
http://drupal.org/q=node/123456#comment-form
- FAIL:
array(3) {
["path"]=> string(42) "node/123456"
["query"]=> array(0) { }
["fragment"]=> string(0) "comment-form"
}
PHP parse_url()
splits it correctly:
array(5) {
["scheme"]=> string(4) "http"
["host"]=> string(10) "drupal.org"
["path"]=> string(1) "/"
["query"]=> string(13) "q=node/123456"
["fragment"]=> string(12) "comment-form"
}