За последние 24 часа нас посетили 21807 программистов и 1075 роботов. Сейчас ищут 719 программистов ...

Ошибка в простом цикле

Тема в разделе "PHP для новичков", создана пользователем Vladchucha, 28 май 2019.

  1. Vladchucha

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

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Доброй ночи,
    должно быть совсем просто, но не вижу где ошибка.
    Есть строка(строки), надо убрать номер, пробелы, черточки, они всегда в начале,
    и оставить текст, в примере "I love the Beatles" надо получить из "01 - I love the Beatles".
    Цикл внизу дает " - I love the Beatles",
    то есть прекращает работу на i =2.
    Почему?
    Спавсибо.
    PHP:
    1. $str ='01 - I love the Beatles';
    2. for($i=0;  $i<strlen($str); $i++)
    3. {  echo $i;
    4.    if($i != '0' & $i != '1' & $i != ' ' & $i != '-' )
    5.    {
    6.     $str = substr($str, $i);
    7.     echo $str.'DD'.$i;
    8.     break;
    9.    }
    10.  }
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    $str = preg_replace('/\d+\s*\-\s*/', '', $str);
     
    Vladchucha нравится это.
  3. Vladchucha

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

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Да, конечно разумнее здесь рег. выражения использовать.
    СПАСИБО.
    Правда где ошибка в цикле так и не врубился.
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я вижу несколько ошибок. думаю вы хотели чтобы получилось чтото такое:
    PHP:
    1. $str ='01 - I love the Beatles';
    2. for($i=0;  $i<strlen($str); $i++) {
    3.     $ii = $str[$i];
    4.     if($ii != '0' && $ii != '1' && $ii != ' ' && $ii != '-' ) {
    5.         $str = substr($str, $i);
    6.         echo $str;
    7.         break;
    8.     }
    9. }
     
    Vladchucha нравится это.
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @runcore, не обязательно выпиливать из строки, можно собирать другую переменную, добавлять в неё все символы отличные от пробела и добавлять один пробел только при смене пробела на любое другое значение.
    @Vladchucha, ещё как вариант можно разбить предложение по пробелам функцией explode, убрать пустые значения и собрать обратно при помощи implode.
     
    Vladchucha нравится это.
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    неожиданное решение.. запишу в свою тетрадку с алгоритмами
     
  7. Vladchucha

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

    С нами с:
    12 ноя 2018
    Сообщения:
    167
    Симпатии:
    7
    Адрес:
    Nürnberg
    Спасибо за науку!