За последние 24 часа нас посетили 21413 программистов и 1381 робот. Сейчас ищут 673 программиста ...

Помогите с кодом

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

  1. TbIPuK

    TbIPuK Новичок

    С нами с:
    14 фев 2018
    Сообщения:
    4
    Симпатии:
    0
    Как сделать так, что если в тексте есть какие либо неразрешенные символы, то генерировало ошибку,
    но в массиве будут только разрешенные символы.
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    если в массиве только разрешенные символы то можно применить регулярку начало-строки + набор-разрешенных-символов-от-одного-до-бесконечности + конец-строки. И если эта регулярка НЕ сработала, то в строке есть недопустимые символы.
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Функция preg_match чтобы найти, функция preg_replace чтобы удалить. В вашем случае, последней будет достаточно, т.к. у неё есть параметр count, который возвращает кол-во замен.
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @Deonis зачем заменять и считать, если можно if(!preg_match()){ throw new \Exception } ?
     
  5. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Я понял фразу "в массиве будут только разрешенные символы", как то, что ТС хочет удалять. Хотя, это всё могут быть "трудности перевода" )
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @Deonis а я понял что у человека на входе есть строка, которую надо проверить на наличие недопустимых символов, и выдать ошибку, если да. При этом он хочет идти от обратного и указывать какие же символы у него допустимы. И делать это через массив.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.765
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. <?php
    2.  
    3. $str = 'проверяемая строка';
    4.  
    5. if ( preg_match ( '~^[aA-zZ0-9\-_]+$~', $str ) ) {
    6.    echo "Все верно";
    7. } else {
    8.    echo "Есть недопустимые символы";
    9. }
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @MouseZver массив допустимых символов не отражён
     
  9. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    PHP:
    1. <?php
    2. $str = 'stroka';
    3. if ( preg_match ( '~[\x21-\x7E]+~', $str, $mt) ) {
    4.   print_r($mt); //Array ( [0] => stroka )
    5. }
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @keren нет. Нам не нужно смотреть на совпадение. Нам надо проверить все ли символы - из массива.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.765
    Симпатии:
    1.322
    Адрес:
    Лень
    не хочу писать in_array
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @MouseZver не хочешь - не пиши. Что ты как баба ломаешься? Тем более он там нахер и не нужен.
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.765
    Симпатии:
    1.322
    Адрес:
    Лень
    @Ganzal зеркало пацан зацени