Заменить ссылки другими php

PHP str_replace для изменения путей ссылок

file_get_contents возвращает строку, содержащую содержимое файла.

Таким образом, вы можете работать в этой строке, используя любую функцию строковой манипуляции, которую вы хотите, например, те, о которых вы говорили.

Что-то вроде этого, используя str_replace, вероятно, сделает:

$content = file_get_contents('http://www.google.com'); $new_content = str_replace(' 

Но обратите внимание, что это заменит URL-адрес в атрибуте href если этот атрибут является первым из

Использование регулярного выражения может помочь вам немного больше; но, вероятно, это тоже не будет идеально, боюсь …

Если вы работаете с HTML-документом и хотите «полное» решение, использование DOMDocument::loadHTML и работа с методами манипуляции с DOM может быть другим (более сложным, но, возможно, более мощным) решением.

Ответы на эти два вопроса также могут помочь вам в зависимости от того, что вы готовы сделать:

EDIT после просмотра комментария:

Если вы хотите заменить две строки, вы можете передать массивы двум первым параметрам str_replace . Например :

$new_content = str_replace( array(' 

Если поиск и замена являются массивами, то str_replace () принимает значение из каждого массива и использует их для поиска и замены объекта. Если замена имеет меньше значений, чем поиск, то для остальных значений замены используется пустая строка. Если поиск – это массив, а replace – строка, то эта строка замены используется для каждого значения поиска.

$text = file_get_contents('some_file'); $text = str_replace(' 
$new_content = preg_replace('!(]*)href="([^"]+)"!','\1 href="site.php?url=\2"', $content); 

Я думаю, что это должно сделать трюк:

Если вы хотите использовать удаленный документ на своем веб-сайте, но сохраните ссылки этого документа в целости, лучше используйте элемент BASE для объявления базового URI:

Подобно коду, отправленному bisko, но, независимо от того, заключает ли он «,» или ничего в href

$text = 'Europanet Webjump Euforia'; $text = preg_replace('|(]*href=[\'"]?)|','\1site.php?url=', $text); 

Источник

Замена внешних ссылок на внутренние на PHP

В этой статье мы рассмотрим пример автоматического заменителя внешних ссылок на внутренние, написанном на PHP.

Данная система состоит из 2 частей.

1. Непосредственно сам заменитель, который пропускает HTML код текста через, так сказать фильтр, где все внешние ссылки заменяются на внутренние.

Первые две строки данного кода это правило "что искать" ($fin) и "на что менять" ($replace), для удобности изменения данные строки с переменными вы можете прописать в файл который загружается всегда, например, config.php.

$fin содержит регулярное выражение, по которому находятся внешние ссылки.

$replace это то на что заменяется найденный пременной $fin кусок ссылки. Как видно из примера, всем внешним ссылкам будет присвоен класс outurl и внешние ссылки будут открываться в новом окне.

Последняя, третья строка является тем самым "фильтром" о котором говорилось ранее, именно он и заменяет все внешние ссылки в переменной $mytext на внутренние.

2. Переадресатор, который ловит нашу внутреннюю ссылку и отправляет пользователя по адресу бывшей внешней ссылки.

Наш переадресатор в данном случае, это engine.php, который содержит следующий PHP код:

if($_GET['url'])
$url = $_GET['url']; //
if (!$url)
$url = "http://вашдомен.ру";
>
if (!preg_match('#(https?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url))
exit ("

Неверный формат запроса! Проверьте URL!

");
>
header("Location:$url");
exit();
>

Как и говорилось выше, вся задача данного файла в том чтобы перенаправить пользователя на конечный адрес.

Замена внешних ссылок с исключением

Способ в пункте 1 выше использовать можно, но лучше использовать его доработанную версию. Которая ниже. Дело в том что код представленный в пункте 1 также работает если ссылка внутренняя, но была написана в абсолютном виде.

Вот собственно изменённый первый пункт:

$mytext=preg_replace('~(.*?href))=(["\'])([a-z0-9]++://(?![a-z0-9\.]*?site\.ru).*?)\2~eSi', '"\1=\"http://site.ru/redirect.php?url=".base64_encode("$3")."\" target=\"_blank\"";', $mytext);

Это более крутой заменитель, который не просто подставляет в переменную внутреннего адреса внешний адрес, а дополнительно кодирует её в base64.

Для того чтобы система с этим заменителем работала исправно, тогда во втором пункте, в нашем переадресаторе замените:

Если же вы не желаете кодировать адрес внешней ссылки, просто замените ".base64_encode("$3")." (ИМЕННО С КАВЫЧКАМИ) на $3.

И чуть не забыл. Как вы наверное уже догадались site надо заменить на ваш сайт. Это и будет исключением, которое заменитель будет обходить.

Если у вас возникли какие-либо вопросы по данной теме, пишите в комментариях.

You have no rights to post comments

Источник

PHP функция замены прямых ссылок на JS с подтверждением перехода.

При публикации контента на сайте часто требуется чтобы прямые ссылки в тексте заменялись на javascript конструкции, осуществляющие переход по внешней ссылке с предупреждением и подтверждением о таком действии. Такая необходимость обычно появляется при запуске комментариев на сайте, где пользователи естественно будут выкладывать ссылки на сторонние ресурсы в качестве подтверждающих источников или по любой другой мотивации. Можно просто отфильтровать ссылки удалением тегов через функцию strip_tags( $html ) . Такие методы скорее всего сильно ограничат возможности пользователей по комментированию, а часть из них просто откажется поддерживать диалог. Но и благотворительность, в форме раздачи бесплатных прямых ссылок, крайне расточительна и даже опасна - спамеры, как пить дать, в два счёта сделают линкопомойку. Исходя из пожеланий - дать возможность пользователям ставить ссылки на внешние ресурсы и не отдавать за красивые слова репутацию сайта, появилась задача из следующих составляющих:

Сначала пишем PHP функцию замены прямых внешних ссылок:

function replace_links($html) < //удаляем все лишние атрибуты оставляя только href и анкор. $html = preg_replace('/]*href=(["'])(.*?)1[^>]*>(.*?)/i', '$3', $html); // Ищем все ссылки в HTML preg_match_all('/(.*?)/i', $html, $matches, PREG_SET_ORDER); // Обрабатываем каждую найденную ссылку foreach ($matches as $match) < $url = $match[1]; $anchor = $match[2]; // Заменяем ссылку на новый код $replacement = "$anchor"; $html = str_replace($match[0], $replacement, $html); > return $html; >

JS код подтверждения перехода по ссылке с применением SweetAlert.

//Подключаем библиотеку sweetalert  //Подключаем стили sweetalert   

ПАМЯТКА! Обязательно скачивайте только проверенный дистрибутив библиотеки SweetAlert . Замечено заражение файлов политической рекламой. Или можете скачать эту рабочую версию.

/* Стили внешних ссылок */ .goRelink < color: blue; cursor: pointer; border-bottom: 1px dashed blue; >.goRelink:hover

Источник

Замена внешних ссылок на внутренние или как спрятать ссылку (Часть 2)

Замена внешних ссылок на внутренние или как спрятать ссылку (Часть 2)

Для начала надо определиться, что будем искать с помощью регулярки. А искать будем все активные ссылки начинающиеся на HTTP:// , HTTPS:// или FTP:// . Полезные функции на PHP - активная ссылка, по которой можно кликнуть. Теперь давайте разберем из чего состоит html код такой ссылки.

Без-имени-1

Теперь мы знаем что искать.

Собираем регулярку

Первая часть регулярки

Разберем по порядку (

Затем ищем href display: block; margin-left: auto; margin-right: auto;" title="Вторая часть регулярки" src="http://www.makannikov.ru/userfiles/images/posts/a6d1fb35d80043ac614da4629e50ee38.jpg" alt="Вторая часть регулярки" width="500" height="121"/>

А после нужно указать, что протокол может быть: либо HTTP либо HTTPS либо FTP.

Третья часть регулярки

Здесь тоже все просто, указываем в скобках (https | ftp). символ | - означает "либо", тоесть либо https либо ftp . А после буквы s (http S ) ставим знак вопроса - это скажет о том, что буква S может быть 1 раз, или её может совсем не быть. А после протокола ставим ://

Регулярное выражение для поиска активных ссылок.

Регулярное выражение для поиска ссылок в тексте

Код

Объясняю что означает $1,$2 и $3 - это группы, для обозначения групп в регулярке, мы использовали круглые скобочки.

Источник

Замена текста ссылки

Замена текста (ссылки) в HTML коде
Здравствуйте форумчане! Не могу реализовать вот такую беду. Прошу помощи. Есть готовый Html.

Поиск части текста в диапазоне ячеек и замена этого текста на найденное соответсвие
Имеется список адресов, которым нужно присвоить в отдельной ячейке название микрорайона. Есть.

Шифрование текста, табличная замена текста
Один из простейших способов шифровки текста состоит в табличной замене каждого символа другим.

замена ссылки
Помогите пожалуйста разобраться делаю парсер фильмов на сайте ссылка на фильм выводится в таком.

Точная замена ссылки
есть такая проблема есть сыдка в переменной $l есть html код в $buf заменяю все слки равные $l в.

Замена ссылки на кнопку
У меня в коде используется ссылка для удаления записи из бд, как ее переделать в submit? Сделать.

.htaccess замена ссылки
Что я делаю не так пытаюсь заменить ссылку /index.php?page=1 на /page1 RewriteRule.

Замена названия ссылки
Добрый день!Помогите пожалуйста! есть вот такой код $key = '#(?<!\])\b$key//+#i'; $arResult =.

Замена текст в [url] на ссылки
Часто встречаю при вставке ссылки теги . Как обычно реализуют это? Например при простом вводе.

Источник

Читайте также:  Java вывести массив string

Оцените статью