v2.5.2
Giriş yap

"Deprecated: str_replace(): Passing null to parameter" hatası

coder
296 defa görüntülendi

Herkese merhaba.
Aşağıdaki hatayı alıyorum, sorunu nasıl çözebilirim.

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in

PHP Sürümüm 8.2.13

<?php
$patterns = [
    '{url}' => '([0-9a-zA-Z]+)',
    '{id}' => '([0-9]+)'
];

$url = str_replace(array_keys($patterns), array_values($patterns), $url);

// Şu şekilde denedim ama yine aynı hatayı alıyorum.
$url = $url ? str_replace(array_keys($patterns), array_values($patterns), $url) : "";

ebykdrms
324 gün önce

Passing null to parameter #2 ($replace) of type array|string is deprecated.
Yani, 2. parametreye null gelmesi PHP 8 ile artık kaldırıldı. Önceki sürümlerde null verilirse boş string olarak kabul ediliyordu muhtemelen.

Hatayı aslında şu satırda alıyorsunuz:
$request_uri = str_replace([$dirname, $basename], null, $_SERVER['REQUEST_URI']);

Burada null olan parametre array veya string olmalı. Şu şekilde düzeltilebilir:
$request_uri = str_replace([$dirname, $basename], '', $_SERVER['REQUEST_URI']);

Bunu yaptığınızda $_SERVER['REQUEST_URI'] içinde geçen $dirname veya $basename ifadelerininin silinmiş halini $request_uri değişkenine atayacaktır.