Ваш код будет приводить к ошибкам, если $replacement
массив или объект (который не имеет __toString()
метод):
[email protected]:~$ php -a
Interactive shell
php > strpos(array(), '');
Warning: strpos() expects parameter 1 to be string, Array given in php shell code on line 1
Call Stack:
10.7258 636424 1. {main}() php shell code:0
10.8469 637640 2. strpos() php shell code:1
Вы должны проверить, если $replacement
является строкой. Это делает ваш код пуленепробиваемые в ситуациях, когда $replacement
может быть массивом или объектом (по любой фальшивой причине) и спасает вас === null
чек:
if (is_string($replacement)
&& !empty($replacement)
&& strpos($replacement, 'unknown') === FALSE)
{
}
хорошо выглядит ..... – hek2mgl
Нет, я ошибался в логике (или, может быть, он и сделал). – Barmar
'if (! In_array ($ replacement, ['', null, 'unknown'])) {...}' – moonwave99