note 125844 added to function.parse-url

From: Date: Fri, 19 Feb 2021 18:11:19 +0000
Subject: note 125844 added to function.parse-url
Groups: php.notes 
Request: Send a blank email to php-notes+get-219098@lists.php.net to get a copy of this message
This function 'parse_rebuild_url' will parse and reassemble your URL with new values provided by the 'overwrite_parsed_url_array' back together. It is also possible to overwrite the URL components by key name and to merge or overwrite query parameters. <?php $test_url = 'http://usr:pss@example.com:81/mypath/myfile.html?a=b&b[]=2&b[]=3&z=9#myfragment'; $new_url_01_overwrite_query_params = parse_rebuild_url( $test_url, array( 'host' => 'new-hostname.tld', 'query' => array( 'test' => 'Hello World', 'a' => array( 'c', 'd' ), 'z' => 8 ), 'fragment' => 'new-fragment-value' ), false ); $new_url_02_mergewith_query_params = parse_rebuild_url( $test_url, array( 'query' => array( 'test' => 'Hello World', 'a' => array( 'c', 'd' ), 'z' => 8 ), 'fragment' => 'new-fragment-value' ), true ); function parse_rebuild_url( $url, $overwrite_parsed_url_array, $merge_query_parameters = true ) { $parsed_url_array = parse_url( $url ); $parsed_url_keys_array = array( 'scheme' => null, 'abempty' => isset( $parsed_url_array['scheme'] ) ? '://' : null, 'user' => null, 'authcolon' => isset( $parsed_url_array['pass'] ) ? ':' : null, 'pass' => null, 'authat' => isset( $parsed_url_array['user'] ) ? '@' : null, 'host' => null, 'portcolon' => isset( $parsed_url_array['port'] ) ? ':' : null, 'port' => null, 'path' => null, 'param' => isset( $parsed_url_array['query'] ) ? '?' : null, 'query' => null, 'hash' => isset( $parsed_url_array['fragment'] ) ? '#' : null, 'fragment' => null ); if ( isset( $parsed_url_array['query'] ) && $merge_query_parameters === true ) { parse_str( $parsed_url_array['query'], $query_array ); $overwrite_parsed_url_array['query'] = array_merge_recursive( $query_array, $overwrite_parsed_url_array['query'] ); } $query_parameters = http_build_query( $overwrite_parsed_url_array['query'], null, '&', PHP_QUERY_RFC1738 ); $overwrite_parsed_url_array['query'] = urldecode( preg_replace( '/%5B[0-9]+%5D/simU', '%5B%5D', $query_parameters ) ); $fully_parsed_url_array = array_filter( array_merge( $parsed_url_keys_array, $parsed_url_array, $overwrite_parsed_url_array ) ); return implode( null, $fully_parsed_url_array ); } ---- Server IP: 45.112.84.4 Probable Submitter: 45.112.85.247 (proxied: 46.27.180.180) ---- Manual Page -- http://php.net/manual/en/function.parse-url.php Edit -- https://master.php.net/note/edit/125844 Del: integrated -- https://master.php.net/note/delete/125844/integrated Del: useless -- https://master.php.net/note/delete/125844/useless Del: bad code -- https://master.php.net/note/delete/125844/bad+code Del: spam -- https://master.php.net/note/delete/125844/spam Del: non-english -- https://master.php.net/note/delete/125844/non-english Del: in docs -- https://master.php.net/note/delete/125844/in+docs Del: other reasons-- https://master.php.net/note/delete/125844 Reject -- https://master.php.net/note/reject/125844 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#219098) next »