Make WordPress Core

Ticket #65448: 65448.4.diff

File 65448.4.diff, 1.5 KB (added by zodiac1978, 7 weeks ago)

Add new comment line

  • src/wp-includes/http.php

     
    750750                $url        = 'placeholder://placeholder' . $url;
    751751        }
    752752
    753         $parts = parse_url( $url );
     753        /*
     754         * PHP 8.5+: Prefer the WHATWG URL parser.
     755         */
     756        if ( class_exists( 'Uri\\WhatWg\\Url' ) ) {
     757                $parsed = \Uri\WhatWg\Url::parse( $url );
    754758
    755         if ( false === $parts ) {
    756759                // Parsing failure.
    757                 return $parts;
     760                if ( null === $parsed ) {
     761                        return false;
     762                }
     763
     764                $parts = array();
     765
     766                $scheme = $parsed->getScheme();
     767                if ( null !== $scheme ) {
     768                        $parts['scheme'] = $scheme;
     769                }
     770
     771                $host = $parsed->getAsciiHost();
     772                if ( null !== $host ) {
     773                        $parts['host'] = $host;
     774                }
     775
     776                $port = $parsed->getPort();
     777                if ( null !== $port ) {
     778                        $parts['port'] = $port;
     779                }
     780
     781                $user = $parsed->getUsername();
     782                if ( null !== $user ) {
     783                        $parts['user'] = $user;
     784                }
     785
     786                $pass = $parsed->getPassword();
     787                if ( null !== $pass ) {
     788                        $parts['pass'] = $pass;
     789                }
     790
     791                $path = $parsed->getPath();
     792                if ( '' !== $path ) {
     793                        $parts['path'] = $path;
     794                }
     795
     796                $query = $parsed->getQuery();
     797                if ( null !== $query ) {
     798                        $parts['query'] = $query;
     799                }
     800
     801                $fragment = $parsed->getFragment();
     802                if ( null !== $fragment ) {
     803                        $parts['fragment'] = $fragment;
     804                }
     805        } else {
     806                $parts = parse_url( $url );
     807
     808                // Parsing failure.
     809                if ( false === $parts ) {
     810                        return false;
     811                }
    758812        }
    759813
    760814        // Remove the placeholder values.