За последние 24 часа нас посетили 22398 программистов и 1029 роботов. Сейчас ищут 700 программистов ...

Как сделать регулярное виражение или...

Тема в разделе "Сделайте за меня", создана пользователем Til_Seier, 20 сен 2016.

  1. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Всем привет
    В ВордПрессе когда создается например пост, эсть поле для ввода имени для поста, и с этого имени формируется сылка
    [​IMG]

    например если в поле имени ввести строку
    Код (Text):
    1. ячячфs!@#$%^&*()_+gasd             kjhkо23     23:(@!*)$*!@7        85972івлпофа        ываывмр%:?12*?!  "(*? !(";*?(-йц-22ом чсм!?2
    тогда сылка будет выглядеть так:
    http://example.com/ячячфs_gasd-kjhkо23-237-85972івлпофа-ываывмр12/

    Помогите мне пожалуйста, как сформировать такую ссылку? Как это можно сделать правильно?
    Возможно у кого есть код того как это сделано в Вордпрессе?
     
    #1 Til_Seier, 20 сен 2016
    Последнее редактирование: 20 сен 2016
  2. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Возможно ли сделать это регулярным выражением или какие способы есть?
     
  3. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    в javascript подхватываете введенное и заменяете все пробелы на "-", после чего возвращаете получившуюся строку.
    если нужно что бы кириллица преобразовывалась в латиницу - в сети хватает примеров
     
    Til_Seier нравится это.
  4. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Возможно я задал вопрос не совсем понятно. В общем мне нужно сделать парс который сможет например с этой строка:

    Код (Text):
    1. ячячфs!@#$%^&*()_+gasd             kjhkо23     23:(@!*)$*!@7        85972івлпофа        ываывмр%:?12*?!  "(*? !(";*?(-йц-22ом чсм!?2
    сделать этоую:
    ячячфs_gasd-kjhkо23-237-85972івлпофа-ываывмр12

    Если я просто заменю пробели у меня получится:
    ячячфs!@#$%^&*()_+gasd-kjhkо23-23:(@!*)$*!@7-85972івлпофа-ываывмр%:?12*?! "(*? !(";*?(-йц-22ом чсм!?2

    А ето не совсем то что нужно
     
  5. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    самая первая регулярка из гугла ^[а-яА-ЯёЁa-zA-Z0-9]+$
     
    Til_Seier нравится это.
  6. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Ти би мог пожалуйста написать маленький код на js, который например из етой строки
    Код (Text):
    1. ячячфs!@#$%^&*()_+gasd             kjhkо23     23:(@!*)$*!@7        85972івлпофа        ываывмр%:?12*?!  "(*? !(";*?(-йц-22ом чсм!?2
    делает эту:
    ячячфs_gasd-kjhkо23-237-85972івлпофа-ываывмр12

    ?

    Ты бы мне очень помог)
     
  7. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    здесь не делают за тебя, здесь только подсказывают
     
    Til_Seier нравится это.
  8. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    ничего, понимаю))

    Возможно кто нибудь мог бы сделать js скрипт?
     
  9. Til_Seier

    Til_Seier Новичок

    С нами с:
    21 мар 2016
    Сообщения:
    44
    Симпатии:
    1
    Всем кто помогал огромное спасибо)
    Разобрался с этим
    Функция которую я написал на javascript:

    Код (Text):
    1. function fetch_name(str){
    2.     var char = '-';
    3.     str = str.substr(0,200);
    4.     str = str.trim();
    5.     var ars = str.replace(/[^-_x\.а-яА-Яa-zA-Z0-9Ёё ]/gi,'').replace(/\s+/gi,char).replace(/\.+/gi,char).replace(/\x+/gi,'x').replace(/\-+/gi,char).toLowerCase();
    6.     var last = ars.length - 1;
    7.     if(ars.charAt(last) == char)
    8.         ars = ars.slice(0, -1);
    9.     if(ars.charAt(0) == char)
    10.         ars = ars.slice(1);
    11.  
    12.     return ars;
    13. }