За последние 24 часа нас посетили 18670 программистов и 1599 роботов. Сейчас ищут 968 программистов ...

Мне нужно из текста формы пост оставить только буквы

Тема в разделе "PHP для новичков", создана пользователем elagin91, 14 ноя 2011.

  1. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    Мне нужно из текста формы пост оставить только буквы, т.е. убрать ВСЕ символы типа <font color=red>привет</font>

    Я тут создал форму

    PHP:
    1. <?php
    2. for ($i = 0; $i <= strlen($_POST[login]); $i++) {
    3.     $b = substr($_POST[login], $i, 1);
    4.   if(($b==q) || ($b==w) || ($b==e) || ($b==r) || ($b==t) || ($b==y) || ($b==u) || ($b==i) || ($b==o) || ($b==p) || ($b==a) || ($b==s) || ($b==d) || ($b==f) || ($b==g) || ($b==h) || ($b==j) || ($b==k) || ($b==l) || ($b==z) || ($b==x) || ($b==c) || ($b==v) || ($b==b) || ($b==n) || ($b==m) || ($b==" ") || ($b==й) || ($b==ц) || ($b==у) || ($b==к) || ($b==е) || ($b==н) || ($b==г) || ($b==ш) || ($b==щ) || ($b==з) || ($b==х) || ($b==ъ) || ($b==ф) || ($b==ы) || ($b==в) || ($b==а) || ($b==п) || ($b==р) || ($b==о) || ($b==л) || ($b==д) || ($b==ж) || ($b==э) || ($b==я) || ($b==ч) || ($b==с) || ($b==м) || ($b==и) || ($b==т) || ($b==ь) || ($b==б) || ($b==ю)){ echo $b; }
    5. }
    6. ?>
    Весь сайт в режиме UTF-8, текст передается формой <form method='post'>Логин: <input name='login'>...<input type='submit' value="Зарегистрироваться"></form>

    все английские буквы и пробелы остаются, символы и русские буквы нет, а мне надо чтобы русские буквы тоже оставались, не подскажите в чем я ошибся ?
     
  2. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    попробуй strip_tags а также для условія in_array()
     
  3. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Было подумал про регулярки.. но потом понял, что ТС настроен на садомазо.
     
  4. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    strip_tags оставляет символы, да он удалит <?php echo "123"; ?> Но не удалит @,^," и тд.

    А админам скажу: у меня есть опыт PHP и не маленький, зачем меня переводить в PHP для новичков:(
     
  5. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    http://ua2.php.net/manual/en/function.mb-substr.php?

    lol
     
  6. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    извините у вас не меленький опыт китайского программирования судя по-вашему условию. когда я писал про многокнопье, я даже не думал что могут быть такие условия.
     
  7. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    Я же писал...
    Пробовал я так, не помогает.
     
  8. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    ладно, кто может предложить свой код для удаления всех символов кроме букв?
     
  9. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    вот что выдумал ;)
    PHP:
    1. <?php
    2. $letters=array_merge(range('A', 'Z'), range('a', 'z'), range('а', 'я'), range('А', 'Я'));
    3. $sometext="Здесь est' цифры 0-9, запятые, спецсимволы !:*;?%(№;";
    4. $clean='';
    5. for($i=0; $i<strlen($sometext); $i++)
    6. {
    7.     if(in_array($sometext[$i], $letters))
    8.     {
    9.         $clean.=$sometext[$i];
    10.     }
    11. }
    12. echo $clean;
    13. ?>
    есть подозрения на то, что в range('а', 'я') входят не все русские буквы :О
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    echo preg_replace('#[^a-Zа-Яёй]#', '', $string);
     
  11. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    krow7
    Спасибо, скрипт работает, но...
    У меня буквы русские и английские остаются, но русский вопросиками отображаются, что то с кодировкой.
     
  12. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    echo mb_ereg_replace("[^a-zA-Zа-яА-ЯёЁ]", '', $str );
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Mamont
    ereg - deprecated
     
  14. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    Я про ereg и не упоминал...
     
  15. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    Я на сайте написал код для проверки...
    PHP:
    1. <?php
    2.   $str = "English Русский 123 !@#$%^&*()_";
    3.   echo mb_ereg_replace("[^a-zA-Zа-яА-ЯёЁ]", '', $str );
    4. ?>
    Результат выполнения:
    HTML:
    1. EnglishР?сский
    Задается вопрос: куда делась буква у?
    Но это уже лучше чем когда все русские буквы пропадают)
     
  16. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    mb_regex_encoding('UTF-8');
     
  17. elagin91

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

    С нами с:
    14 ноя 2011
    Сообщения:
    40
    Симпатии:
    0
    Всё работает, всем спасибо.
     
  18. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    я бы всё же вначале прошёлся stip_tags, а затем регуляркой tommyangelo.
    у preg_replace есть ключ для работы с утф-8 символами u - нужно просто добавить его к регулярке и сохранить документ в утф-8 кодировке.