ФорумПрограммированиеPHP для идиотов → Как удалить в строке url (типа mysite.com) но оставить email?

Как удалить в строке url (типа mysite.com) но оставить email?

  • webus

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 2 января 2009 г. 9:48

    Не могу разобраться как удалить из строки url (которые могут быть записаны как угодно: http://www.mysite.com или www.mysite.com или mysite.com), но при этом оставить email

    Пробую таким образом:
    $Text = ereg_replace("[0-9A-Za-z_\.\-]+\.[A-Za-z]{2,6}", "", $Text);
    Удаляются все что похоже на mysite.com
    НО email (например: [email protected]) не сохраняется а обрезается : [email protected]

    Может кто нибудь помочь?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 10:01, спустя 13 минут 21 секунду

    [^@] (узнайте что такое ^)
    adw/0
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 января 2009 г. 10:02, спустя 28 секунд

    С трудом понял что нужно =)
    #(http://?)[0-9a-z_\.\-/]+\.[a-z]{2,4}#is

    по
    adw0rd
    #(http://?)[^@]+\.[a-z]{2,4}#is

    Не стоило наверное так много рассказывать=(
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 10:03, спустя 1 минуту 32 секунды

  • webus

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 2 января 2009 г. 10:20, спустя 16 минут 33 секунды


    С трудом понял что нужно =)
    #(http://?)[0-9a-z_\.\-/]+\.[a-z]{2,4}#is

    по
    adw0rd
    #(http://?)[^@]+\.[a-z]{2,4}#is

    Не стоило наверное так много рассказывать=(


    Этот вариант работает, если url начинается с http://
    а если без http то не удаляет

    Надо чтобы удалял mysite.com но при этом email не "калечил"
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 10:36, спустя 16 минут

    webus, я ничего не говорил про http://, вы узнали что такое ^ ?

    И еще вопрос, вы ищете это в тегах, например:
    <a href="http://www.example.com">example</a>
    ?
    adw/0
  • webus

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 2 января 2009 г. 10:50, спустя 13 минут 44 секунды

    я не в тегах ищу, в обычном тексте, куда могут попытаться одновременно поместить адрес сайта и email
    Насчет символа ^ :
    выражение ^р — строка, начинающуюся с символа р.
    Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указаные интервалы (a-z и A-Z).
    [^@] - видимо означает что не содержит @
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 января 2009 г. 11:04, спустя 14 минут 7 секунд

    Мля думать некогда, поэтому только то что получилось.
    # (http://)?[0-9a-z_\.\-/]+?[^@]{1}[0-9a-z_\.\-/]+?\.[a-z]{2,4} #is

    Работает точно, проверил.
    Но можно лучше
  • webus

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 2 января 2009 г. 12:41, спустя 1 час 37 минут 26 секунд

    У меня к сожалению не получается
    Делаю так:
    $Text = ereg_replace("(http://)?[0-9a-z_\.\-/]+?[^@]{1}[0-9a-z_\.\-/]+?\.[a-z]{2,4}", "", $Text);

    Warning: ereg_replace(): REG_ERANGE:аinvalid character range

    Пробую упростить, вот так работает:
    $Text = ereg_replace("[0-9A-Za-z_\.\-]+\.[A-Za-z]{2,4}", "", $Text);

    но к сожалению emailы тут не учитываются
    Должна быть проверка, что удалять только в том случае, если вот этому "[0-9A-Za-z_\.\-]+\.[A-Za-z]{2,4}" не предшествует @
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 12:45, спустя 4 минуты 8 секунд

    webus, ну так вставьте вначале [^@]… Попробуйте хотябы…
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 12:53, спустя 7 минут 21 секунду

    ereg - зло)
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 12:53, спустя 14 секунд

    adw0rd, не лезь со своим [^@] пусть сабстрингами делает
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 января 2009 г. 13:03, спустя 10 минут 39 секунд

    Скопируй строчку
    $Text = preg_replace("# (http://)?[0-9a-z_\.\-/]+?[^@]{1}[0-9a-z_\.\-/]+?\.[a-z]{2,4} #is", "", $Text);

    P.S. Ром с колой рулит!!! =)
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 2 января 2009 г. 13:07, спустя 3 минуты 16 секунд

    пробегаюсь глазами по регулярке и вижу что ром с колой == зло

    +? == *
    [^@]{1} == [^@]
    \.\-/ == \./-

    PS и еще пробел в начале не нужен
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 января 2009 г. 13:35, спустя 28 минут 42 секунды

    CTAPbIu_MABP, нужен, вот в конце не нужен.
    Of попробую написать что нить нормальное, пока "муза" действует! =)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!