За последние 24 часа нас посетили 18027 программистов и 1607 роботов. Сейчас ищут 1357 программистов ...

Удалить ссылки конкретного домена

Тема в разделе "Сделайте за меня", создана пользователем palexa, 4 ноя 2014.

  1. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    Привет

    Мне необходимо удалить ссылки
    Если так
    $text=preg_replace('/<[\/]?a[^>]*>/i', '', $text); - то удаляются все ссылки

    Мне необходимо удалить ссылки, при условии что имя домена hitachi и независимо что там в ссылке до или после
    Остальные оставить


    Заранее спасибо
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ворователь контента?
     
  3. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    Нет,сайт в Интранет сети, скрипт работает через проксик, и поэтому внешние ссылки на страницах будут путать пользователей. У нас такие товарисчи, что потом замучают звонками, почему страница не открывается
     
  4. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    Или такие ссылки

    Может можно что бы вместо подобной ссылки /3395633_ment.html оставался только АНКОР
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно. не понятно в чем у вас затруднение.
     
  6. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    На странице есть ссылки (тянутся с сайта который предоставляет информацию)

    Внешние, которые ведут на сайт-донор (интернета у пользователей нет, так что ссылки смысла не имеют, только лишние вопросы будут)
    href="http://site-donor.net/.../..../...../index.html

    Внутренние, которые ведут на страницы где есть внешние ссылки (эти страницы особо не важны)
    href="3429529_ment.html

    Надо избавиться или от внешних ссылок, или от этих внутренних, что бы вместо ссылок был только текст ссылки

    Можно удалить код ссылки
    $text=str_replace('href="3429529_ment.html',$title,$text);

    Но 3429529 постоянно рызные и большое количество

    Затруднение в том, что я не программист, вот и всё затруднение
     
  7. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Если надо удалить цифры и подчеркивание из начала
    $text = preg_replace('~^[0-9]+_~', '', $text);
     
  8. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    Так если можно, может поможете ?

    Спасибо, но не подходит

    Надо удалить именно внешние ссылки (анкор и текст может остаться)

    Или внутренние который имеют приведённый выше шаблон (анкор и текст должен остаться)

    Ещё раз повторюсь, не потому что они ведут на сайт донор, а потому что скрипт переделан для работы в локальной сети через прокси, и толку от этих ссылок нет. Будут только нервировать пользователей сайта, тем что не окрываются
     
  9. torrius

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

    С нами с:
    28 июн 2014
    Сообщения:
    35
    Симпатии:
    1
    Вставьте предпоследней строкой:
    Код (Text):
    1. $text = preg_replace('/href=".*?kinoplaneta\.net.*?"/i', 'href="#"', $text);
     
  10. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    torrius
    Спасибо, но помогает не до конца

    <a href="http://site-donor.net"></a> - помогает
    <a href="http://site-donor.net/films/466933/raskajanie/index.html"><b></a> - не помагает
     
  11. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    Я так понимаю, надо удалить знаки если
    Начиная от
    <a все знаки вместе с сылкой, если присутствет href="http://site.com/и-всё-что-дальше-если-есть > - это удалить
    Анкор - оставить
    </a> - это удалить

    Вроде не сложно, но как я уже не пробовал, работать не хочет
     
  12. torrius

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

    С нами с:
    28 июн 2014
    Сообщения:
    35
    Симпатии:
    1
    проверил, у меня работает)
    условие в регулярке такое:
    href=".*?kinoplaneta\.net.*?"/i
    если часть строки начинается с: href=" , после которого могут быть любые символы: .*? , после которых есть: kinoplaneta.net , после которой опять могут быть любые символы: .*? , заканчивающиеся: " (ковычкой), тогда все это заменяется на: href="#"
    и по сути работает хоть с
    <a href="http://kinoplaneta.net"></a>
    хоть с
    <a href="http://kinoplaneta.net/films/466933/raskajanie/index.html"><b></a>
    Еще можно скриптом пошаманить:
    Код (Text):
    1. <script>
    2. document.onclick = function(e){
    3.     var domen = 'kinoplaneta.net'; // домен, который игнорируем
    4.     e = e || event;
    5.     var elem = e.target || e.srcElement;
    6.     if(elem.tagName == 'A'
    7.     && elem.getAttribute('href')
    8.     && ~elem.getAttribute('href').indexOf(domen))return false;
    9. }
    10. </script>
    если совсем удалить теги <a></a> оставив лишь содержимое, как вы предлагаете, возможно поломается дизайн ;)
     
  13. palexa

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

    С нами с:
    3 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    torrius - спасибо