За последние 24 часа нас посетили 16576 программистов и 1679 роботов. Сейчас ищут 833 программиста ...

поиск подстроки в строке

Тема в разделе "PHP для новичков", создана пользователем gelius, 20 фев 2015.

  1. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. $mystring = 'abcd';
    3. $findme   = 'ab';
    4.  
    5. if (preg_match($findme, $mystring)) {
    6.     echo "naideno.";
    7. } else {
    8.     echo "ne naideno";
    9. }
    10. ?>
    Говорит "ne naideno" независимо от значений переменных. Как так?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Потому что нарушен синтаксис регулярных выражений. А вообще, использовать их просто для поиска подстроки - это как из гранатомёта мух убивать. Для этого есть функции strpos и mb_strpos (для строк в многобайтовых кодировках, как utf8)
     
  3. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    Еще такой момент. Как здесь:
    Код (Text):
    1. <?php
    2. $mystring = 'abc';
    3. $findme   = 'a';
    4. $pos = strpos($mystring, $findme);
    5.  
    6. // Заметьте, что используется ===.  Использование == не даст верного
    7. // результата, так как 'a' находится в нулевой позиции.
    8. if ($pos === false) {
    9.     echo "Строка '$findme' не найдена в строке '$mystring'";
    10. } else {
    11.     echo "Строка '$findme' найдена в строке '$mystring'";
    12.     echo " в позиции $pos";
    13. }
    14. ?>
    искать в строке несколько разных подстрок?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Цикл использовать
     
  5. gelius

    gelius Активный пользователь

    С нами с:
    17 окт 2013
    Сообщения:
    29
    Симпатии:
    0
    Не понятно почему так не работает:
    Код (Text):
    1. <?php
    2. $mystring = 'abc';
    3. $findme1   = 'a';
    4. $findme2   = 's';
    5. $pos = strpos($mystring, '$findme1 || $findme2');
    6.  
    7. // Заметьте, что используется ===.  Использование == не даст верного
    8. // результата, так как 'a' находится в нулевой позиции.
    9. if ($pos === false) {
    10.     echo "Строка '$findme' не найдена в строке '$mystring'";
    11. } else {
    12.     echo "Строка '$findme' найдена в строке '$mystring'";
    13.     echo " в позиции $pos";
    14. }
    15. ?>
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А подумать? Почему вдруг должно работать? В строке $mystring нету строки '$findme1 || $findme2' (вы ищите её буквально). И причём здесь логический оператор (вы видимо его пытались написать)?