За последние 24 часа нас посетили 17868 программистов и 1614 роботов. Сейчас ищут 1219 программистов ...

Латиници и любой символ

Тема в разделе "Регулярные выражения", создана пользователем Bezlepkin, 22 авг 2012.

  1. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Привет всем! Помогите сделать шаблон для поиска латиницы, цифр и любого символа.
    Для латиницы и цифр я сделал так: preg_match("/^[a-zA-Z0-9\s+]*$/", $name)
    А как что бы любой символ искал не знаю
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
  3. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Да, я про это читал. Но где точку ставить?
    Я просто писал в конце 0-9. но это не работало
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Точку не в символьном классе.
    Почитай там и другую информацию в разделе про регулярки. Почитай описание функций, примеры посмотри...
     
  5. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    А можно подсказать для оперативности?!
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. preg_match('/.*/', $str) 
    Здесь .* - любое количество любых символов. Только в данном случае, конечно, это бессмысленная какая-то регулярка :)
     
  7. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    а как совместить с моим шаблоном preg_match("/^[a-zA-Z0-9\s+]*$/", $name)
    Просто я это хочу дописать в друпале, там не идет проверка на кирилицу.
    И моя проверка идет после всех друпаловских проверок.
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В пхпшной реализации в . не включается символ переноса строки. Чтобы включался, надо добавлять модификатор s после выражения.
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Bezlepkin
    Вопрос не понятен. Перечисли все правила, которым должна отвечать проверяемая строка текста.

    Добавлено спустя 33 секунды:
    [vs],
    точно.
     
  10. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Мне надо что бы проходило все кроме кирилицы.
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. preg_match('/^[^а-яА-ЯёЁ]*$/', $name) 
     
  12. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Я извеняюсь, не додумался раньше. Нужно разрешить латиницу и любой символ но не запретом кирилицы. Вдруг пользователь введет китайский или арабский:)

    Добавлено спустя 2 минуты 9 секунд:
    Или так нельзя, типа все знаки и латиница? придется наверное все разрешеные знаки прописывать в шаблоне!?
     
  13. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    А можно как нибудь соединить мой шаблон с '/.*/'?
     
  14. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ты, наверно, не правильно понимаешь словосочетание "любой символ". Любой символ -это не только !@#$%^&*() и прочее подобное. Любой символ - это вообще любой символ, включая буквы, латиницу, кириллицу, цифры, японские, арабские и китайские иероглифы и так далее. В общем, всё что можно напечатать.

    Добавлено спустя 2 минуты 38 секунд:
    В твоём случае, наверно, нужно перечислить в ручную все символы, которые ты хочешь разрешить для использования.
     
  15. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Думаю так и придется сделать. Спасибо за помощь!
     
  16. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Последний вопрос, как сделать только латиницу, цифры и знаки: дефис, подчеркивание и точка и все это в любом месте и в любой количестве.
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. <?php
    2. $name = 'Oleg';
    3. if(preg_match('/^[a-z0-9._-]+$/i', $name))
    4.     echo('Ok!');
    5. else
    6.     echo('Bad word...');
    7. ?>
     
  18. Bezlepkin

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

    С нами с:
    22 авг 2012
    Сообщения:
    56
    Симпатии:
    0
    Круто! Спасибо огромное!