php strstr и preg_match странности

очень простой код:

$q = 'Кардхолдер №2 Crazy Horse Черный';
echo preg_match('/Saffiano/', $q, $t).PHP_EOL;
if(preg_match('/Saffiano/', $q, $t) === 1);
    {print_r($t);
        $q .= ', цвет нити '.substr(strrchr($q, ' '), 1);
    }
print_r($q);

выводит:

0
Array
(
)
Кардхолдер №2 Crazy Horse Черный, цвет нити Черный

почему preg_match проходит проверку? Вот полный тест и везде такое же:

<?php

$q = 'Кардхолдер №2 Crazy Horse Черный';

echo preg_match('/Saffiano/', $q, $t).PHP_EOL;

if(preg_match('/Saffiano/', $q, $t) === 1);
    {print_r($t);
        $q .= ', цвет нити '.substr(strrchr($q, ' '), 1);
    }
    
print_r($q);


echo PHP_EOL.PHP_EOL;


$q = 'Кардхолдер №2 Crazy Horse Черный';
$t = NULL;

echo preg_match('/Saffiano/', $q, $t).PHP_EOL;

if(preg_match('/Saffiano/', $q, $t) === 0);
    {print_r($t);
        $q .= ', цвет нити '.substr(strrchr($q, ' '), 1);
    }
    
print_r($q);


echo PHP_EOL.PHP_EOL;


$q = 'Кардхолдер №2 Crazy Horse Черный';
$t = NULL;

echo strstr($q, 'Saffiano').PHP_EOL;

$t = strstr($q, 'Saffiano');
if($t !== false);
    {print_r($t);
        $q .= ', цвет нити '.substr(strrchr($q, ' '), 1);
    }
    
print_r($q);


echo PHP_EOL.PHP_EOL;


$q = 'Кардхолдер №2 Crazy Horse Черный';
$t = NULL;

echo strstr($q, 'Saffiano').PHP_EOL;

$t = strstr($q, 'Saffiano');
if($t === false);
    {print_r($t);
        $q .= ', цвет нити '.substr(strrchr($q, ' '), 1);
    }
    
print_r($q);

результат:

0
Array
(
)
Кардхолдер №2 Crazy Horse Черный, цвет нити Черный

0
Array
(
)
Кардхолдер №2 Crazy Horse Черный, цвет нити Черный


Кардхолдер №2 Crazy Horse Черный, цвет нити Черный


Кардхолдер №2 Crazy Horse Черный, цвет нити Черный

Ответы (1 шт):

Автор решения: саня

синтаксическая ошибка в условии if(preg_match('/Saffiano/', $q, $t) === 0); ; в конце лишняя

→ Ссылка