За последние 24 часа нас посетили 16972 программиста и 2211 роботов. Сейчас ищут 986 программистов ...

[^a-zA-Z0-9\-]

Тема в разделе "Регулярные выражения", создана пользователем gkhelloworld, 18 июн 2010.

  1. gkhelloworld

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

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    Код (Text):
    1. /([^a-zA-Z0-9\-])/
    нужено решение.. как исключить знак '-' если он вконце строки
     
  2. Щербаков Олег

    Щербаков Олег Активный пользователь

    С нами с:
    30 ноя 2008
    Сообщения:
    19
    Симпатии:
    0
    Тут намного эффективнее описать задачу которая стоит.
    Если требуется отфильтровать строки которые похожи на "sdfsfd-" то лучше идти от обратного, т.е. написать подходящий шаблон /[a-zA-Z0-9]\-$/ и проверять отрицание.
    Т.е.
    PHP:
    1. !preg_match('/[a-zA-Z0-9]\-$/', $string)
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Брр, насоветуют тут.

    PHP:
    1. <?php
    2.  
    3. // Решение не соответствовало задаче и вырезано
    4.  
    5. ?>
     
  4. gkhelloworld

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

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    извиняюсь...за то что не правильно описал свою задачу... на самом деле мне нужен было исключать любые символы оставлять только буквы и цифры, но иногда бывает что знак '-'может оказаться в конце строки вот поэтому если он в конце или начале строки его нужно исключить, а в остальных он должен присутствовать.
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Честно говоря я охренительно ступил.
    Делается это так:

    PHP:
    1. <?php
    2.  
    3. $haystack = "minus-terminated string-";
    4.  
    5. // Обрезаем минусы
    6. $haystack = trim($haystack, "-");
    7.  
    8. ?>
    Вот эту строку передавай регулярке.
     
  6. gkhelloworld

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

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    а если ?
    preg_replace
    как исключить из такой строки символы

    -my%&8page100-hell$#o-wo&rld-

    и получить

    mypage100-hello-world
     
  7. gkhelloworld

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

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    да..трим я тоже забыл..
    честно говоря..мне нужно след. из названия страницы сделать ей ссылку к примеру

    Привет мир это Я --> privet-mir-eto-ya.html
    и, чтобы небыло в названии лишних символов и всяких минусов и точек и .т.п. я делаю это preg_replace
    но не могу дотямить как сделать это правильно...
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Код (Text):
    1. preg_replace("#(?:^[^a-z0-9]|[^a-z0-9\-]+|[^a-z0-9]$)#is","",$text)
    ня, как сделать правильно, сам догадаешься =)
     
  9. gkhelloworld

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

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    а как насчет ?
    "/[^a-z0-9\-]+/mi" работает так как мне нужно.. ну а - в конце и в начале вырежу 'trim'