"Deprecated: str_replace(): Passing null to parameter" hatası
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) : "";
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.