Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127207 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by qa.php.net (Postfix) with ESMTPS id 8A5BC1A00BC for ; Sun, 27 Apr 2025 20:30:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1745785699; bh=pR/SRJ7h3h6EcWYoOZE3BWMJtUzSE5FAuvEbi/Nib8Q=; h=References:In-Reply-To:From:Date:Subject:To:From; b=Z7sx+vfbqplqX9icPOtVt3j8MEJ6ZOUgTvvrVQEAp+6h6PH/VDdcnkjS8BW1leWyv 5wcDs+6Z8iaZqjI8pvgxTggss+g7SfjigwYg3GKZqyXtmZ+JUKmLjC6/KxCj6cGFyI R+IQTc3USj1hq+oNgJa4r2/Eits1roTFVWQSv5tzpU9kv350nQKsZHbCkGq3KFY/cX WJzGQkg39V0ZW7et/Tr+1Okz31aVgZo3iEYhs8d1mxxq4NQx1d4uFpnT+Q6HRwmCnX fo4PKKqFaKagqIaMC04rIEAi5nnopB/1rx+mxd5zA1dfVjfuLTCFIZrqnNlW3tXQUE 6xc6bGK04Uh5A== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 057D218007C for ; Sun, 27 Apr 2025 20:28:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, HTML_MESSAGE,HTML_OBFUSCATE_05_10,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sun, 27 Apr 2025 20:28:18 +0000 (UTC) Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-22c336fcdaaso47524035ad.3 for ; Sun, 27 Apr 2025 13:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745785835; x=1746390635; darn=lists.php.net; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=lYNYMYkllRJ5bvX1Rr5sLOj0zSUlz4CtWQXlNcpKyz0=; b=j20svF9Bpmy4upw8DGxgToZ003/EYH+Q5m25DSOSjH/k78biTQAJIX2USmBjA3n9Ai pCs5sGGXLwzEhSvxaiTaamwmwW9/MV7hLRZC/NmLY57jVk3ENqN4mQ2D37aA4/5sS9XX O//KzYruz71RIyOk5hqSa0ndh0R+yKLmUxXmh1htx5MO32hmwt/lo6FBBNi5Dl6hQ2rE /5UYOuNZRmuaLgtjn9Jg4Gjoa7yhtzQCuRkazFJLTYqT7o1wilZw0WFGMvxLuHCEi2bH K4TAwnTRVCRPJSGGtETeUL9JdUYC5FvQnRGqE5YvSfSALgIv4NolTGlMtrBp6f1gV3PC mZrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745785835; x=1746390635; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lYNYMYkllRJ5bvX1Rr5sLOj0zSUlz4CtWQXlNcpKyz0=; b=nfnMQO9+V+WFRNbVgMGMD8LEKBj2v1UUXKDjbN5Df6fPMO87ewEqtDkihkEp10nC7O Hze9d0HEPgt6dn4u9Tya3lunmaQ+/IN16UjOVzCjedpBIJ+ppiVUJs6TR7K8GvoY0eNx xYi4uGUoyzOISZHpVyE8OQTkZ0puCiTn5evaAVrHjm5FyILXRaQaC4PoNi+s+Z+yRqNc RXD1zdfHKgPsMDbf09ktW2J85qSinyrHtMIzFSme44RrU3OtdSnX8jQYzCCP9zspMcWk kSZ2xHZg62Ae//2Ks9ints40ZgO9U5+L76Lnl9vSlJXjCtdM6LQ+DourdA9s4M0mfmUm 4dyA== X-Forwarded-Encrypted: i=1; AJvYcCXuvEDoCM+6EXmpYimFIH7gQOQHSFfzZpUThY7/f/DZOB2dAtFeN/aSRYRGdYByHGUnv1mWZ3tc4t4=@lists.php.net X-Gm-Message-State: AOJu0Yz7BzZvCqobLcLtBjANlR3DG5VEQy+awCdfLcScepnjfelwnMVj qPhvjDx3eKrGG1Ooy1G+qGoIxHSTFnXkGwiVmg6UqTdPJ9HPC5kFTypN2ZnA7EiSH5Przcpar6B 7QpOQTsBQIwM9Q+dQSY2GE+EVmDXUNPdU X-Gm-Gg: ASbGncvEDq4J5nHQZeEexrj8mMkHWFhwSe5rKDWtkfAgY0rWW4Ew6JbJyXeWV4iUdSQ 3/rEk5E7YVb+dMLe2mNKq4tlO5tuv/aoh3w7fEnw9O3iZ5MMHA08D4cZREPtSK3BFEdPeAW/ufb qpqr6+/QcFpihbEyyeI9zXkXX2AfDd8akGnTvWJbaTnemmEqGTnuJ9gw== X-Google-Smtp-Source: AGHT+IFufpBUEeg/IOvIYWZ+qPHR0EYeoMUPhzbhGz7VYD0DQqL0/JEqmtxb0EeIPNgRALFJwnAVnUssOFb6+4r/T5A= X-Received: by 2002:a17:902:e852:b0:215:b75f:a1cb with SMTP id d9443c01a7336-22dbf4d7314mr131998195ad.9.1745785835138; Sun, 27 Apr 2025 13:30:35 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 References: <1BCB4144-231D-45EA-A914-98EE8F0F503A@automattic.com> <8E614C9C-BA85-45D8-9A4E-A30D69981C5D@automattic.com> <8df04e01-deac-404b-beb7-cd982423db63@bastelstu.be> <33427cd03035ef084245c44290b56a55@bastelstu.be> <0aa1eefc3941bdea0092e935074daa58@bastelstu.be> <76d96ea8a78c6025128c0a4b01c94c0a@bastelstu.be> In-Reply-To: <76d96ea8a78c6025128c0a4b01c94c0a@bastelstu.be> Date: Sun, 27 Apr 2025 22:30:24 +0200 X-Gm-Features: ATxdqUEbAJ-DGLw5_WUQpTC3Bn6abKzaDrO-gRWXEUwNu7NexmZHFtCO3GR1Bik Message-ID: Subject: Re: [PHP-DEV] [RFC] [Discussion] Add WHATWG compliant URL parsing API To: =?UTF-8?Q?Tim_D=C3=BCsterhus?= , =?UTF-8?B?TcOhdMOpIEtvY3Npcw==?= , PHP Internals List Content-Type: multipart/alternative; boundary="0000000000008eb1480633c870e1" From: nyamsprod@gmail.com (ignace nyamagana butera) --0000000000008eb1480633c870e1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Mat=C3=A9 I see you updated the RFC but I believe there's still some errors in the example: $url =3D Uri\WhatWg\Url::parse("/foo", ".com"); // Throws Uri\WhatWg\InvalidUrlException because of $baseUri Since parse is used shouldn't it return null instead of throwing ? $uri =3D Uri\Rfc3986\Uri::parse("https://%e4%bd%a0%e5%a5%bd%e4%bd%a0%e5%a5%= bd.com"); // percent-encoded form of https://=E4=BD=A0=E5=A5=BD=E4=BD=A0=E5=A5=BD.com echo $uri->toString(); // https://%e4%bd%a0%e5%a5%bd%e4%bd%a0%e5%a5%bd.com RFC3986 host normalization states that URL encoded part should be encoded using uppercased letter so on normalization: https://%e4%bd%a0%e5%a5%bd%e4%bd%a0%e5%a5%bd.com should be https://%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD.com I updated my polyfill to reflect the latest changes in the RFC --0000000000008eb1480633c870e1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Mat=C3=A9

I see you updated the RFC but I believe there's still some errors in= the example:

$url =3D Uri\WhatWg\Url::parse("/foo", ".com&q=
uot;);                 // Throws Uri\WhatWg\InvalidUrlException because =
of $baseUri
Since parse is used shouldn't it return null in= stead of throwing ?=C2=A0

$uri =3D Uri\Rfc3986\Uri::parse("https://%e4%bd%=
a0%e5%a5%=
bd%e4%bd%a0%e5%a5%bd.com"); // perc=
ent-encoded form of https://=E4=BD=
=A0=E5=A5=BD=E4=BD=A0=E5=A5=BD.com
ec=
ho $uri-><=
span class=3D"gmail-me1" style=3D"color:rgb(0,102,0)">toString(=
); =
                            // https://%e4%bd%a0%e5%a5%bd%e4%bd%a0%e5%a5%bd.com
RFC3986 host nor= malization states that URL encoded part should be encoded using uppercased = letter so on normalization:
https://%e4%bd%a0%e5%a5%bd%e4%bd%a0%e5=
%a5%bd.com should be https://%E4%BD%A0%E5%A5%=
BD%E4%BD%A0%E5%A5%BD.com
I updated my polyfill to reflect = the latest changes in the RFC=C2=A0=C2=A0
--0000000000008eb1480633c870e1--