ExBB Community » » PHP/Perl » Замена внешних ссылок на внутренние средствами PHP

Страниц (1): [1]
 

1. Gori - 12 июля 2015 — 17:23 - перейти к сообщению
Помогите составить патерн.

Допустим мой сайт www.moysait.ru
На нём есть внешние ссылки вида http://sait1.ru/page1.html и http://www.sait2.ru/page2.html

Нужно чтобы они заменились на: http://moysait.ru.ru/page1.html и http://www.moysait.ru.ru/page2.html

Вот пример, но он не рабочий:
CODE:


$text="Текст <a href=http://sait1.ru/page1.html>ссылка1</a> и снова <a href

=http://www.sait2.ru/page2.html>ссылка2</a> конец текста.";

$text= preg_replace(
"(<a.*?href=\"?'?)([^ \"'>]+)(\"?'?.*?>)",
'$1http://moysait.ru/$2$3',
$text);

echo $text;
2. electron - 12 июля 2015 — 20:22 - перейти к сообщению
может просто в .htacces добавить
CODE:

RewriteRule ^http://moysait.ru.ru/page1.html/?$ http://sait1.ru/page1.html [QSA,L]
RewriteRule ^http://moysait.ru.ru/page2.html/?$ http://sait1.ru/page2.html [QSA,L]

?
3. Gori - 13 июля 2015 — 02:54 - перейти к сообщению
electron , нужно именно трансформировать ссылки в тексте. Путём реального изменения текстового контента.
4. Gori - 13 июля 2015 — 03:52 - перейти к сообщению
Да, и речь идёт не только о ссылках http://moysait.ru.ru/page1.html и http://www.moysait.ru.ru/page2.html

Это могут быть любые внешние ссылки. Вручную это прописать невозможно.
5. Gori - 13 июля 2015 — 05:17 - перейти к сообщению
Нашёл функцию:
CODE:
<?php
function hyperlink($text)
{
$text = ereg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);
return $text;
}

$text = "Текст <a href=http://1111111.ru/page1.html>ссылка</a> и снова <a href=http://www.222222.ru/page2.html>ссылка</a> конец http://www.333333.ru/page3.html <a href=/page4.html>ссылка</a>";

echo hyperlink($text);
?>

Но она только лишь переделывает обычные текстовые ссылки в гиперссылки.
Нельзя ли как-то дополнить эту функцию?
6. Gori - 13 июля 2015 — 08:41 - перейти к сообщению
Нашёл вроде то что надо, но не работает. Ошибки выдаёт. Не подскажите что здесь не так:
CODE:
<?php
function unurl( $text ) {
$host = strtr($_SERVER['HTTP_HOST'], array('.' =&gt; '\.'));
$pattern = '/&lt;a (.*?)href=[\&quot;\']([a-z0-9]+)\:\/\/(?!'.$host.')(.*?)\/?(.*?)[\&quot;

\'](.*?)&gt;(.*?)&lt;\/a&gt;/i';
if ( defined('USER_FRIENDLY_URL') ) {
$text = preg_replace_callback( $pattern, 'text_unurl', $text );
} else $text = preg_replace_callback( $pattern, 'text_unurl_bad', $text );
return $text;
}
?>

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0384]     [ ]