Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:127637 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 lists.php.net (Postfix) with ESMTPS id 7CA241A00BC for ; Tue, 10 Jun 2025 19:47:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1749584710; bh=yJyH7UgIOEY39tGBBwA34ysMbK4koX6mF6cXZmNz7EQ=; h=From:Date:Subject:To:From; b=ShGJkJ7lRwYcRb2JJt/ypEG2Euot08agYCZ/LneuQI3U1yagp8UOwd0WBpNV8SUa0 pL6GewSeewtKfFPqbMnjuED7Qm5OUNqLc4kgt7sFLeIrYAnQsJ/6VdhEYiRzAqK/y5 ge8q4hcxhOELpv6NGorqEtPYA/TPfwiiZb+55RrJzILmkn+UuNHy32OAqKMtx9Drzy K2Rw/ZABeexxzhcuVjZK1yzqwt/Y5nqEEpii270arwOO1HgPjgo7IJpFxbyU2tt9vc Hxz03k8Rh2h7G+1e1nofp3Iat2tG1SExQvUFFiWXrWQuUvM6EjC0NIe1CtLFxG1Gb5 3D/8mMlwT90qg== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id D579A1801DD for ; Tue, 10 Jun 2025 19:45:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_50, DKIM_INVALID,DKIM_SIGNED,DMARC_MISSING,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: Error (Cannot connect to unix socket '/var/run/clamav/clamd.ctl': connect: Connection refused) X-Envelope-From: Received: from crane.oak.relay.mailchannels.net (crane.oak.relay.mailchannels.net [23.83.215.43]) (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 ; Tue, 10 Jun 2025 19:45:05 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|hans@loltek.net Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id D7C76840C6 for ; Tue, 10 Jun 2025 19:47:05 +0000 (UTC) Received: from pdx1-sub0-mail-a238.dreamhost.com (100-118-166-165.trex-nlb.outbound.svc.cluster.local [100.118.166.165]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 7A8EF8392E for ; Tue, 10 Jun 2025 19:47:05 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1749584825; a=rsa-sha256; cv=none; b=zN/54FCslYSitLdlnJrsjdc7bE5D0AREhU9u1icMwj9+3w/ZwQXuRzzl0dJUeHBpKVfV8p 2te74aFnkHtiCgYP8lJvyGerUreEkocBBQmnoU9VI5ACCFsO+B7rCWH/GSb66f8H3CQyDK I3VkyVQDat6GSfnU6g6bjALEO0h8KVnQwVK+8N5WcWe0GzqoOnTfyVCyX/qW40G5hPJoMX Alog1q2F5qOQVJwJywHBRr9Lzz1MFrtjLPRuADdonyzQ7Menz7FFXEC7aVtx7GQZ0WNLHm TtlHqrKdvQgB+jSzwxBDHWmFDS8QcWZJfq99We1oATX0dAW4iIP/uRL6eGoneg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1749584825; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: dkim-signature; bh=txB2XTacjQEvikitXShESyiGCf2WBr6so5/LEFw6BzY=; b=qh8Rv3t2M+pFyxZRuqHimk9jjNKXsAQq/8rVw88wPJ8HDFCmyELYRxxtIMUGUVGwvFugEb dZyw/84Yl1DSik1HRXrZ70sOEiyKusNI6yShkwgg56f7HN6rtS0L2KtFSmB31/+fYXFbnC O4TT1Qs7RdW0xUYeLiyvOMrPxO8qdBonH1PpHXewkiwBS6xm4nLNwTUb9HeuXjziJdFbNc SZ7UDf4/kvRKBEjuJNUZb4Oq6/NEPcO2QdddGWqWCnKowkEH++T0lboZBQHVMAcDh3Gkc3 A6eInIUQTiiLRY09KX9le/hRVlwiR3z6OJE9B1BN2OrqmD3oLEpu7LSk1I2iGg== ARC-Authentication-Results: i=1; rspamd-5674bcf875-blrcj; auth=pass smtp.auth=dreamhost smtp.mailfrom=hans@loltek.net X-Sender-Id: dreamhost|x-authsender|hans@loltek.net X-MC-Relay: Bad X-MailChannels-SenderId: dreamhost|x-authsender|hans@loltek.net X-MailChannels-Auth-Id: dreamhost X-Interest-Befitting: 50fef5462a5709b4_1749584825730_3084497559 X-MC-Loop-Signature: 1749584825730:749682914 X-MC-Ingress-Time: 1749584825730 Received: from pdx1-sub0-mail-a238.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.118.166.165 (trex/7.0.3); Tue, 10 Jun 2025 19:47:05 +0000 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hans@loltek.net) by pdx1-sub0-mail-a238.dreamhost.com (Postfix) with ESMTPSA id 4bGzp12LtWzTL for ; Tue, 10 Jun 2025 12:47:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=loltek.net; s=dreamhost; t=1749584825; bh=txB2XTacjQEvikitXShESyiGCf2WBr6so5/LEFw6BzY=; h=From:Date:Subject:To:Content-Type; b=n4FdnDvzNMRAEGH3A2GBmaiYHbN8sxzAa83rICvpKRIc643goe1dwXk0yHFc0MXa2 +6NMckcmI2atfxgipAoiNFMxybQ3dQzPcpJ9PG8T37jz55oHNH14FSV6P10V49tHUY WW6Bbv8Y2obtnraUxR67Gbw1mMCsuCunR1YqY3FPEo785IpMmamhr18T4h4OF/40MI crtFLv6e4DrL1JLgLBxIY3nnCdGHSjc2eZZW/5J2SRzTS0Pry2luT5V5Bhn/n6HB2f EwS7x9Nwo5xTByo6Pz9d2XjOE2V9BPLEjizjfreqYfCa33t4gsvsFzmGW/2HHnScJx DZ/u8Y4VwvxJA== Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-742caef5896so4897245b3a.3 for ; Tue, 10 Jun 2025 12:47:05 -0700 (PDT) X-Gm-Message-State: AOJu0YxuMari6Xri7bf/VoWOomV0NQCKevz/SdKRzIGS1XwmPdWRtVRJ 4pJ40iI0gERlyfTQOc6dwfzqNcvkPN564VSovRnJN1hqpY2oU5VGs5Aj6fYFzprDjtNCRbpS4FT 3k5wBATeV+fXk5FZuD24lF/hYrcreY4s= X-Google-Smtp-Source: AGHT+IG6xBTiVzXU8SdmA+aIm8kVCh/5XizI7AFLneyjhBHBBiz4QbC/l+91hN/rWgGfLZ5AeNBZ2LvgOHMQvHgtzBE= X-Received: by 2002:a05:6a21:6016:b0:21f:5361:d7eb with SMTP id adf61e73a8af0-21f867260f7mr1301756637.31.1749584824986; Tue, 10 Jun 2025 12:47:04 -0700 (PDT) Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 Date: Tue, 10 Jun 2025 21:46:52 +0200 X-Gmail-Original-Message-ID: X-Gm-Features: AX0GCFtJKWzu9uIIgVXEeELeE2gKVMC_q82REclH0TJrE-QX6vD7jPgdn3KR7Q0 Message-ID: Subject: [PHP-DEV] Can we make str_(starts|ends)_with variadic? To: PHP Internals List Content-Type: text/plain; charset="UTF-8" From: hans@loltek.net (Hans Henrik Bergan) Can we make str_(starts|ends)_with variadic? PR: https://github.com/php/php-src/pull/18825 Code like ```php if (str_starts_with($url, "http://") || str_starts_with($url, "https://")) { // url } if (str_ends_with($filename, ".pdf") || str_ends_with($filename, ".doc") || str_ends_with($filename, ".docx")) { // document } $isValidExtension = false; foreach ($validExtensions as $needle) { if (str_ends_with($str, $needle)) { $isValidExtension = true; break; } } if ($isValidExtension) { // valid extension } ``` could then be replaced with ``` if (str_starts_with($url, "http://", "https://")) { // url } if (str_ends_with($filename, ".pdf", ".doc", ".docx")) { // document } if(str_ends_with($str, ...$validExtensions){ // valid extension } ``` Fwiw Python support str.endswith((".pdf", ".doc", ".docx"))