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); ; в конце лишняя