За последние 24 часа нас посетили 18824 программиста и 1652 робота. Сейчас ищут 974 программиста ...

Обратные ссылки

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

  1. newroze

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

    С нами с:
    19 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Регексп заменяет url на имя хоста.
    В таком виде:
    Код (Text):
    1.  
    2. $imgHost = preg_replace("/^https*\:\/\/([^\/]+?)\/.*/ie", "\\1", $row['url']);
    Выдаёт нотисы:
    Notice: Use of undefined constant i082 - assumed 'i082' in /path : regexp code on line 1
    Notice: Use of undefined constant radikal - assumed 'radikal' in /path : regexp code on line 1
    Notice: Use of undefined constant ru - assumed 'ru' in /path : regexp code on line 1
    ..............

    А в таком, при дополнительных кавычках в строке с обратной ссылкой, нормально срабатывает:
    Код (Text):
    1.  
    2. $imgHost = preg_replace("/^https*\:\/\/([^\/]+?)\/.*/ie", "\"\\1\"", $row['url']);
    Почему в первом случае обратная ссылка в кавычках не интерпретируется как строка? Рабочий случай тоже непонятен.
     
  2. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    сможешь объяснить что тут написано?
     
  3. newroze

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

    С нами с:
    19 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Если в начале http или https затем :// и (далее более одного любого(кроме /) символа) затем обязательно / и далее любые символы,
    то всё это совпадение заменяется на обратную ссылку - далее более одного любого(кроме /) символа
     
  4. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    вобщем лень всё объяснять. что значит обратная ссылка даже знать не хочу =)

    регулярка делает это, судя по её виду.
    PHP:
    1. <?
    2. print preg_replace("#(?:(?:https?|ftp)\:\/\/)?((?:[a-z0-9]{2,}[\.\-]?)+\.[a-z0-9]{2,})(?:\/[^\s]*)?#is","\\1",$text);
     
  5. newroze

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

    С нами с:
    19 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Оу, я модификатор "e" по запарке поставил. Он интерпретировал \\1 как php код.
    Да.