Код (Text): <?php $mystring = 'abcd'; $findme = 'ab'; if (preg_match($findme, $mystring)) { echo "naideno."; } else { echo "ne naideno"; } ?> Говорит "ne naideno" независимо от значений переменных. Как так?
Потому что нарушен синтаксис регулярных выражений. А вообще, использовать их просто для поиска подстроки - это как из гранатомёта мух убивать. Для этого есть функции strpos и mb_strpos (для строк в многобайтовых кодировках, как utf8)
Еще такой момент. Как здесь: Код (Text): <?php $mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // Заметьте, что используется ===. Использование == не даст верного // результата, так как 'a' находится в нулевой позиции. if ($pos === false) { echo "Строка '$findme' не найдена в строке '$mystring'"; } else { echo "Строка '$findme' найдена в строке '$mystring'"; echo " в позиции $pos"; } ?> искать в строке несколько разных подстрок?
Не понятно почему так не работает: Код (Text): <?php $mystring = 'abc'; $findme1 = 'a'; $findme2 = 's'; $pos = strpos($mystring, '$findme1 || $findme2'); // Заметьте, что используется ===. Использование == не даст верного // результата, так как 'a' находится в нулевой позиции. if ($pos === false) { echo "Строка '$findme' не найдена в строке '$mystring'"; } else { echo "Строка '$findme' найдена в строке '$mystring'"; echo " в позиции $pos"; } ?>
А подумать? Почему вдруг должно работать? В строке $mystring нету строки '$findme1 || $findme2' (вы ищите её буквально). И причём здесь логический оператор (вы видимо его пытались написать)?